home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / lfsrebuild / tmp < prev   
Encoding:
Text File  |  1992-03-12  |  126.8 KB  |  18,985 lines

  1. # 1 "lfsrebuild.c"
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. static char rcsid[] = "$Header: /user2/mendel/lfs/src/cmds/checkLfs/RCS/checkLfs.c,v 1.1 90/06/01 10:10:18 mendel Exp Locker: mendel $ SPRITE (Berkeley)";
  22.  
  23.  
  24. # 25 "lfsrebuild.c"
  25.  
  26.  
  27.  
  28. # 1 "/sprite/lib/include/cfuncproto.h"
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69. # 44 "/sprite/lib/include/cfuncproto.h"
  70.  
  71.  
  72. # 52 "/sprite/lib/include/cfuncproto.h"
  73.  
  74.  
  75.  
  76.  
  77.  
  78. # 59 "/sprite/lib/include/cfuncproto.h"
  79.  
  80.  
  81.  
  82.  
  83. # 65 "/sprite/lib/include/cfuncproto.h"
  84.  
  85.  
  86.  
  87.  
  88. # 71 "/sprite/lib/include/cfuncproto.h"
  89.  
  90. typedef char *_VoidPtr;
  91.  
  92.  
  93.  
  94.  
  95.  
  96. # 28 "lfsrebuild.c"
  97.  
  98. # 1 "/sprite/lib/include/varargs.h"
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. typedef char *va_list;
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. # 28 "/sprite/lib/include/varargs.h"
  123.  
  124.  
  125.  
  126.  
  127. # 32 "/sprite/lib/include/varargs.h"
  128.  
  129.  
  130.  
  131.  
  132. # 29 "lfsrebuild.c"
  133.  
  134. # 1 "/sprite/lib/include/sprite.h"
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156. # 1 "/sprite/lib/include/cfuncproto.h"
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190. # 76 "/sprite/lib/include/cfuncproto.h"
  191.  
  192.  
  193. # 22 "/sprite/lib/include/sprite.h"
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207. typedef int Boolean;
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214. typedef int  ReturnStatus;
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247. typedef char *Address;
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256. typedef int *ClientData;
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265. extern void panic();
  266.  
  267.  
  268.  
  269.  
  270. # 30 "lfsrebuild.c"
  271.  
  272. # 1 "/sprite/lib/include/stdio.h"
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303. # 1 "/sprite/lib/include/cfuncproto.h"
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. # 76 "/sprite/lib/include/cfuncproto.h"
  338.  
  339.  
  340. # 31 "/sprite/lib/include/stdio.h"
  341.  
  342. # 34 "/sprite/lib/include/stdio.h"
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349. # 42 "/sprite/lib/include/stdio.h"
  350.  
  351.  
  352. # 47 "/sprite/lib/include/stdio.h"
  353.  
  354.  
  355. # 52 "/sprite/lib/include/stdio.h"
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408. typedef struct _file {
  409.     unsigned char *lastAccess;    
  410.  
  411.  
  412.     int readCount;        
  413.  
  414.  
  415.     int writeCount;        
  416.  
  417.  
  418.  
  419.  
  420.  
  421.     unsigned char *buffer;    
  422.  
  423.     int bufSize;        
  424.  
  425.  
  426.     void (*readProc)    ();
  427.                 
  428.     void (*writeProc)    ();
  429.                 
  430.     int (*closeProc)    ();
  431.                 
  432.  
  433.     ClientData clientData;    
  434.  
  435.  
  436.     int status;            
  437.  
  438.  
  439.     int flags;            
  440.  
  441.     struct _file *nextPtr;    
  442.  
  443.  
  444.  
  445.  
  446. } FILE;
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471.  
  472.  
  473.  
  474.  
  475.  
  476.  
  477.  
  478.  
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505. # 201 "/sprite/lib/include/stdio.h"
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513. # 208 "/sprite/lib/include/stdio.h"
  514.  
  515. # 212 "/sprite/lib/include/stdio.h"
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560. extern FILE stdioInFile, stdioOutFile, stdioErrFile;
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.         extern void    clearerr     ();
  598.         extern int    fclose     ();
  599.         extern FILE *    fdopen     ();
  600.         extern int    fflush     ();
  601.         extern int    fgetc     ();
  602.         extern char *    fgets     ();
  603.         extern int    fileno     ();
  604.         extern FILE *    fopen     ();
  605.         extern int    fputc     ();
  606.         extern int    fputs     ();
  607.         extern int    fread 
  608.     ();
  609.         extern FILE *    freopen 
  610.     ();
  611.         extern long    fseek     ();
  612.         extern long    ftell     ();
  613.         extern int    fwrite 
  614.     ();
  615.         extern char *    gets     ();
  616.         extern int    getw     ();
  617.         extern void    perror     ();
  618.         extern FILE *    popen     ();
  619.         extern int    pclose     ();
  620.         extern int      remove     ();
  621.         extern int      rename     ();
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628. # 336 "/sprite/lib/include/stdio.h"
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.         extern int    printf     ();
  638.         extern int    fprintf     ();
  639.         extern int    scanf     ();
  640.         extern char *    sprintf     ();
  641.         extern int    sscanf     ();
  642.         extern int    fscanf     ();
  643.         extern int    vfprintf 
  644.     ();
  645.         extern int    vfscanf 
  646.     ();
  647.         extern int    vprintf     ();
  648.         extern char *    vsprintf 
  649.     ();
  650.  
  651.  
  652.         extern int    puts     ();
  653.         extern int    putw     ();
  654.         extern void    rewind     ();
  655.         extern void    setbuf     ();
  656.         extern void    setbuffer     ();
  657.         extern void    setlinebuf     ();
  658.         extern int    setvbuf     ();
  659.         extern FILE *    tmpfile     ();
  660.         extern char *    tmpnam     ();
  661.         extern char *    tempnam     ();
  662.         extern int    ungetc     ();
  663.         extern void    _cleanup     ();
  664.  
  665.         extern void    Stdio_Setup 
  666.  
  667.  
  668.  
  669.  
  670.     ();
  671.  
  672.  
  673. # 31 "lfsrebuild.c"
  674.  
  675. # 1 "/sprite/lib/include/sys/types.h"
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710. typedef    unsigned char    u_char;
  711. typedef    unsigned short    u_short;
  712. typedef    unsigned int    u_int;
  713. typedef    unsigned long    u_long;
  714. typedef    unsigned short    ushort;        
  715.  
  716. # 46 "/sprite/lib/include/sys/types.h"
  717.  
  718. # 52 "/sprite/lib/include/sys/types.h"
  719.  
  720.  
  721.  
  722. typedef struct  _physadr { int r[1]; } *physadr;
  723. typedef struct  label_t {
  724.         int     val[12];
  725. } label_t;
  726.  
  727.  
  728.  
  729.  
  730.  
  731. typedef struct _quad {long val[2]; } quad;
  732. typedef    struct    _uquad {unsigned long val[2]; } u_quad;
  733.  
  734. typedef    long    daddr_t;
  735. typedef    char *    caddr_t;
  736. typedef    long *    qaddr_t;    
  737. typedef    u_long    ino_t;
  738. typedef    long    swblk_t;
  739.  
  740.  
  741. typedef    int    size_t;
  742.  
  743.  
  744.  
  745. typedef    long    time_t;
  746.  
  747.  
  748.  
  749. typedef    long    clock_t;
  750.  
  751. typedef    short    dev_t;
  752. typedef    long    off_t;
  753. typedef    short    uid_t;
  754. typedef    short    gid_t;
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762. typedef int    pid_t;
  763.  
  764. typedef long    key_t;        
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777. typedef long    fd_mask;
  778.  
  779.  
  780.  
  781.  
  782.  
  783. typedef    struct fd_set {
  784.     fd_mask    fds_bits[    (((256)+(( (sizeof(fd_mask) * 8        )    )-1))/( (sizeof(fd_mask) * 8        )    ))];
  785. } fd_set;
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793. # 32 "lfsrebuild.c"
  794.  
  795. # 1 "/sprite/lib/include/option.h"
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.  
  815.  
  816.  
  817. # 1 "/sprite/lib/include/cfuncproto.h"
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851. # 76 "/sprite/lib/include/cfuncproto.h"
  852.  
  853.  
  854. # 22 "/sprite/lib/include/option.h"
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865. typedef struct Option {
  866.     int        type;        
  867.     char    *key;        
  868.     char *    address;    
  869.     char    *docMsg;    
  870. } Option;
  871.  
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966. int Opt_Parse 
  967.     ();
  968.  
  969. void Opt_PrintUsage 
  970.     ();
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979. # 33 "lfsrebuild.c"
  980.  
  981. # 1 "/sprite/lib/include/stdlib.h"
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013. # 1 "/sprite/lib/include/cfuncproto.h"
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047. # 76 "/sprite/lib/include/cfuncproto.h"
  1048.  
  1049.  
  1050. # 32 "/sprite/lib/include/stdlib.h"
  1051.  
  1052. # 36 "/sprite/lib/include/stdlib.h"
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058. # 45 "/sprite/lib/include/stdlib.h"
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.         extern double     atof     ();
  1068.         extern int     atoi     ();
  1069.         extern long int atol     ();
  1070.         extern double     strtod     ();
  1071.         extern long int strtol     ();
  1072.         extern unsigned long int
  1073.         strtoul     ();
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088. # 95 "/sprite/lib/include/stdlib.h"
  1089.  
  1090.  
  1091.         extern _VoidPtr    malloc     ();
  1092.         extern int    free     ();
  1093.  
  1094.  
  1095.  
  1096.         extern _VoidPtr calloc     ();
  1097.         extern _VoidPtr    realloc     ();
  1098.         extern void    Mem_Bin     ();
  1099.         extern char *    Mem_CallerPC();
  1100.         extern void    Mem_DumpTrace     ();
  1101.         extern void    Mem_PrintConfig     ();
  1102.         extern void    Mem_PrintInUse     ();
  1103.         extern void    Mem_PrintStats     ();
  1104.         extern void    Mem_PrintStatsInt     ();
  1105.  
  1106.  
  1107.  
  1108.  
  1109.         extern void    Mem_SetPrintProc     ();
  1110.         extern int    Mem_Size     ();
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116. typedef struct {
  1117.     int        size;    
  1118.     int        flags;    
  1119. } Mem_TraceInfo;
  1120.  
  1121.         extern void    Mem_SetTraceSizes 
  1122.     ();
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142. extern int    mem_SmallMinNum;
  1143. extern int    mem_LargeMinNum;
  1144. extern int    mem_LargeMaxSize;
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150. extern int    mem_NumAllocs;
  1151. extern int    mem_NumFrees;
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160. typedef struct div_t {
  1161.     int quot;
  1162.     int rem;
  1163. } div_t;
  1164.  
  1165. typedef struct {
  1166.     long int quot;
  1167.     long int rem;
  1168. } ldiv_t;
  1169.  
  1170.         extern int    abs     ();
  1171.         extern div_t    div     ();
  1172.         extern long int labs     ();
  1173.         extern ldiv_t    ldiv     ();
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.         extern void    abort     ();
  1182.         extern int    atexit     ();
  1183.         extern _VoidPtr bsearch 
  1184.  
  1185.     ();
  1186.         extern int    exit     ();
  1187.         extern char *    getenv     ();
  1188.         extern void    qsort 
  1189.     ();
  1190.         extern int    rand     ();
  1191.         extern long    random     ();
  1192.         extern int    srand     ();
  1193.         extern int    srandom     ();
  1194.         extern int    system     ();
  1195.  
  1196.  
  1197. # 34 "lfsrebuild.c"
  1198.  
  1199. # 1 "/sprite/lib/include/string.h"
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221. # 1 "/sprite/lib/include/cfuncproto.h"
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255. # 76 "/sprite/lib/include/cfuncproto.h"
  1256.  
  1257.  
  1258. # 22 "/sprite/lib/include/string.h"
  1259.  
  1260. extern _VoidPtr    memchr     ();
  1261. extern int    memcmp     ();
  1262. extern _VoidPtr    memcpy     ();
  1263. extern _VoidPtr    memmove     ();
  1264. extern _VoidPtr    memset     ();
  1265.  
  1266. extern int    strcasecmp     ();
  1267. extern char *    strcat     ();
  1268. extern char *    strchr     ();
  1269. extern int    strcmp     ();
  1270. extern char *    strcpy     ();
  1271. extern int    strcspn     ();
  1272. extern char *    strdup     ();
  1273. extern char *    strerror     ();
  1274. extern int    strlen     ();
  1275. extern int    strncasecmp     ();
  1276. extern char *    strncat     ();
  1277. extern int    strncmp     ();
  1278. extern char *    strncpy     ();
  1279. extern char *    strpbrk     ();
  1280. extern char *    strrchr     ();
  1281. extern int    strspn     ();
  1282. extern char *    strstr     ();
  1283. extern char *    strtok     ();
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289. extern char *    index     ();
  1290. extern char *    rindex     ();
  1291.  
  1292.  
  1293. # 35 "lfsrebuild.c"
  1294.  
  1295. # 1 "/sprite/lib/include/sys/file.h"
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352.  
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395. # 36 "lfsrebuild.c"
  1396.  
  1397. # 1 "/sprite/lib/include/alloca.h"
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403.  
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416.  
  1417.  
  1418.  
  1419.  
  1420.  
  1421. # 26 "/sprite/lib/include/alloca.h"
  1422.  
  1423. extern char *alloca();
  1424.  
  1425.  
  1426.  
  1427.  
  1428. # 37 "lfsrebuild.c"
  1429.  
  1430. # 1 "/sprite/lib/include/bstring.h"
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436.  
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452. # 1 "/sprite/lib/include/cfuncproto.h"
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480.  
  1481.  
  1482.  
  1483.  
  1484.  
  1485.  
  1486. # 76 "/sprite/lib/include/cfuncproto.h"
  1487.  
  1488.  
  1489. # 22 "/sprite/lib/include/bstring.h"
  1490.  
  1491. extern int    bcmp     ();
  1492. extern void    bcopy     ();
  1493. extern void    bzero     ();
  1494. extern int    ffs     ();
  1495.  
  1496.  
  1497. # 38 "lfsrebuild.c"
  1498.  
  1499. # 1 "/sprite/lib/include/unistd.h"
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521. # 1 "/sprite/lib/include/cfuncproto.h"
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555. # 76 "/sprite/lib/include/cfuncproto.h"
  1556.  
  1557.  
  1558. # 22 "/sprite/lib/include/unistd.h"
  1559.  
  1560. # 1 "/sprite/lib/include/sys/types.h"
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. # 125 "/sprite/lib/include/sys/types.h"
  1589.  
  1590. # 23 "/sprite/lib/include/unistd.h"
  1591.  
  1592. # 26 "/sprite/lib/include/unistd.h"
  1593.  
  1594.  
  1595.  
  1596.  
  1597. # 32 "/sprite/lib/include/unistd.h"
  1598.  
  1599.  
  1600. # 37 "/sprite/lib/include/unistd.h"
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608. extern void  _exit     ();
  1609. extern int access     ();
  1610. extern int chdir     ();
  1611. extern int chown     ();
  1612. extern int close     ();
  1613. extern int dup     ();
  1614. extern int dup2     ();
  1615. extern int execl     ();
  1616. extern int execle     ();
  1617. extern int execlp     ();
  1618. extern int execv     ();
  1619. extern int execve     ();
  1620. extern int execvp     ();
  1621. extern int fork     ();
  1622. extern char *getcwd     ();
  1623. extern gid_t getegid     ();
  1624. extern uid_t geteuid     ();
  1625. extern gid_t getgid     ();
  1626. extern int getgroups     ();
  1627. extern int getpid     ();
  1628. extern uid_t getuid     ();
  1629. extern int isatty     ();
  1630. extern long lseek     ();
  1631. extern int pipe     ();
  1632. extern int read     ();
  1633. extern int setgid     ();
  1634. extern int setuid     ();
  1635. extern unsigned sleep     ();
  1636. extern int unlink     ();
  1637. extern int write     ();
  1638.  
  1639.  
  1640. extern char *crypt     ();
  1641. extern int fchown     ();
  1642. extern int flock     ();
  1643. extern int ftruncate     ();
  1644. extern int readlink     ();
  1645. extern int setegid     ();
  1646. extern int seteuid     ();
  1647. extern int setreuid     ();
  1648. extern int symlink     ();
  1649. extern int truncate     ();
  1650. extern int umask     ();
  1651. extern int vfork     ();
  1652.  
  1653.  
  1654.  
  1655.  
  1656. # 39 "lfsrebuild.c"
  1657.  
  1658. # 1 "/sprite/lib/include/bit.h"
  1659.  
  1660.  
  1661.  
  1662.  
  1663.  
  1664.  
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. # 26 "/sprite/lib/include/bit.h"
  1683.  
  1684.  
  1685. # 1 "/sprite/lib/include/cfuncproto.h"
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719. # 76 "/sprite/lib/include/cfuncproto.h"
  1720.  
  1721.  
  1722. # 28 "/sprite/lib/include/bit.h"
  1723.  
  1724. # 1 "/sprite/lib/include/bstring.h"
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742. # 28 "/sprite/lib/include/bstring.h"
  1743.  
  1744. # 29 "/sprite/lib/include/bit.h"
  1745.  
  1746.  
  1747.  
  1748.  
  1749.  
  1750. # 34 "/sprite/lib/include/bit.h"
  1751.  
  1752.  
  1753.  
  1754. # 37 "/sprite/lib/include/bit.h"
  1755.  
  1756.  
  1757.  
  1758.  
  1759. # 41 "/sprite/lib/include/bit.h"
  1760.  
  1761.  
  1762.  
  1763. # 44 "/sprite/lib/include/bit.h"
  1764.  
  1765.  
  1766.  
  1767.  
  1768. # 48 "/sprite/lib/include/bit.h"
  1769.  
  1770.  
  1771.  
  1772.  
  1773. # 52 "/sprite/lib/include/bit.h"
  1774.  
  1775.  
  1776.  
  1777.  
  1778. # 56 "/sprite/lib/include/bit.h"
  1779.  
  1780.  
  1781.  
  1782. # 59 "/sprite/lib/include/bit.h"
  1783.  
  1784.  
  1785.  
  1786.  
  1787. # 63 "/sprite/lib/include/bit.h"
  1788.  
  1789.  
  1790.  
  1791. # 66 "/sprite/lib/include/bit.h"
  1792.  
  1793.  
  1794. extern int      Bit_FindFirstSet     ();
  1795. extern int      Bit_FindFirstClear     ();
  1796. extern Boolean      Bit_Intersect     ();
  1797. extern Boolean       Bit_Union     ();
  1798. extern Boolean       Bit_AnySet     ();
  1799. extern int        *Bit_Expand     ();
  1800.      
  1801.  
  1802. # 40 "lfsrebuild.c"
  1803.  
  1804. # 1 "/sprite/lib/include/time.h"
  1805.  
  1806.  
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817. # 1 "/sprite/lib/include/cfuncproto.h"
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851. # 76 "/sprite/lib/include/cfuncproto.h"
  1852.  
  1853.  
  1854. # 13 "/sprite/lib/include/time.h"
  1855.  
  1856. # 17 "/sprite/lib/include/time.h"
  1857.  
  1858. # 21 "/sprite/lib/include/time.h"
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864. struct tm {
  1865.     int    tm_sec;
  1866.     int    tm_min;
  1867.     int    tm_hour;
  1868.     int    tm_mday;
  1869.     int    tm_mon;
  1870.     int    tm_year;
  1871.     int    tm_wday;
  1872.     int    tm_yday;
  1873.     int    tm_isdst;
  1874.     long    tm_gmtoff;
  1875.     char    *tm_zone;
  1876. };
  1877.  
  1878.         extern clock_t clock     ();
  1879.         extern time_t time     ();
  1880.         extern time_t mktime     ();
  1881.         extern double difftime     ();
  1882.         extern struct tm *gmtime     ();
  1883.         extern struct tm *localtime     ();
  1884.         extern char *asctime     ();
  1885.         extern char *ctime     ();
  1886.         extern int strftime 
  1887.     ();
  1888.  
  1889.  
  1890. # 41 "lfsrebuild.c"
  1891.  
  1892. # 1 "/sprite/lib/include/sys/time.h"
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. # 1 "/sprite/lib/include/cfuncproto.h"
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928.  
  1929.  
  1930.  
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940. # 76 "/sprite/lib/include/cfuncproto.h"
  1941.  
  1942.  
  1943. # 14 "/sprite/lib/include/sys/time.h"
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949. struct timeval {
  1950.     long    tv_sec;        
  1951.     long    tv_usec;    
  1952. };
  1953.  
  1954. struct timezone {
  1955.     int    tz_minuteswest;    
  1956.     int    tz_dsttime;    
  1957. };
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974. # 44 "/sprite/lib/include/sys/time.h"
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986. struct    itimerval {
  1987.     struct    timeval it_interval;    
  1988.     struct    timeval it_value;    
  1989. };
  1990.  
  1991.  
  1992.  
  1993. # 1 "/sprite/lib/include/time.h"
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004. # 51 "/sprite/lib/include/time.h"
  2005.  
  2006. # 62 "/sprite/lib/include/sys/time.h"
  2007.  
  2008.  
  2009.         extern int    getitimer     ();
  2010.         extern int    gettimeofday 
  2011.     ();
  2012.         extern int    settimeofday 
  2013.     ();
  2014.         extern int    setitimer 
  2015.     ();
  2016.         extern int    utimes 
  2017.     ();
  2018.  
  2019.  
  2020. # 42 "lfsrebuild.c"
  2021.  
  2022. # 1 "/sprite/lib/include/fs.h"
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045. # 1 "/sprite/lib/include/spriteTime.h"
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054.  
  2055.  
  2056.  
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066. # 23 "/sprite/lib/include/spriteTime.h"
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075. typedef struct {
  2076.     int    seconds;
  2077.     int    microseconds;
  2078. } Time;
  2079.  
  2080. typedef struct {
  2081.     int year;
  2082.     int month;
  2083.     int dayOfYear;
  2084.     int dayOfMonth;
  2085.     int dayOfWeek;
  2086.     int    hours;
  2087.     int    minutes;
  2088.     int    seconds;
  2089.     int localOffset;
  2090.     Boolean dst;
  2091. } Time_Parts;
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114. extern Time time_ZeroSeconds;
  2115. extern Time time_OneMicrosecond;
  2116. extern Time time_OneMillisecond;
  2117. extern Time time_TenMilliseconds;
  2118. extern Time time_HundredMilliseconds;
  2119. extern Time time_HalfSecond;
  2120. extern Time time_OneSecond;
  2121. extern Time time_TwoSeconds;
  2122. extern Time time_TenSeconds;
  2123. extern Time time_OneMinute;
  2124. extern Time time_OneHour;
  2125. extern Time time_OneDay;
  2126. extern Time time_OneYear;
  2127. extern Time time_OneLeapYear;
  2128.  
  2129.  
  2130.  
  2131.  
  2132. extern void    Time_Add     ();
  2133. extern void    Time_Subtract 
  2134.     ();
  2135. extern void    Time_Multiply     ();
  2136. extern void    Time_Divide     ();
  2137. extern void    Time_Normalize     ();
  2138. extern void    Time_ToAscii 
  2139.     ();
  2140. extern void    Time_ToParts 
  2141.     ();
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168. # 124 "/sprite/lib/include/spriteTime.h"
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174. # 129 "/sprite/lib/include/spriteTime.h"
  2175.  
  2176.  
  2177.  
  2178.  
  2179. # 133 "/sprite/lib/include/spriteTime.h"
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185. # 138 "/sprite/lib/include/spriteTime.h"
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191. # 143 "/sprite/lib/include/spriteTime.h"
  2192.  
  2193.  
  2194.  
  2195. # 23 "/sprite/lib/include/fs.h"
  2196.  
  2197. # 1 "/sprite/lib/include/kernel/procTypes.h"
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220. # 32 "/sprite/lib/include/kernel/procTypes.h"
  2221.  
  2222.  
  2223. # 1 "/sprite/lib/include/proc.h"
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290. typedef unsigned int     Proc_PID;
  2291.  
  2292.  
  2293.  
  2294.  
  2295.  
  2296.  
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353. typedef enum {
  2354.     PROC_UNUSED,    
  2355.     PROC_RUNNING,    
  2356.     PROC_READY,        
  2357.     PROC_WAITING,    
  2358.  
  2359.     PROC_EXITING,    
  2360.  
  2361.     PROC_DEAD,        
  2362.     PROC_MIGRATED,    
  2363.     PROC_NEW,        
  2364.     PROC_SUSPENDED    
  2365. } Proc_State;
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.  
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450. # 1 "/sprite/lib/include/sprite.h"
  2451.  
  2452.  
  2453.  
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460.  
  2461.  
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478.  
  2479.  
  2480.  
  2481.  
  2482.  
  2483.  
  2484.  
  2485.  
  2486.  
  2487.  
  2488.  
  2489.  
  2490.  
  2491. # 97 "/sprite/lib/include/sprite.h"
  2492.  
  2493. # 227 "/sprite/lib/include/proc.h"
  2494.  
  2495. # 1 "/sprite/lib/include/spriteTime.h"
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540. # 145 "/sprite/lib/include/spriteTime.h"
  2541.  
  2542. # 228 "/sprite/lib/include/proc.h"
  2543. # 232 "/sprite/lib/include/proc.h"
  2544.  
  2545.  
  2546. # 1 "/sprite/lib/include/kernel/sigTypes.h"
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565. # 21 "/sprite/lib/include/kernel/sigTypes.h"
  2566.  
  2567.  
  2568. # 1 "/sprite/lib/include/kernel/machTypes.h"
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.  
  2586.  
  2587.  
  2588. # 23 "/sprite/lib/include/kernel/machTypes.h"
  2589.  
  2590.  
  2591. # 1 "/sprite/lib/include/kernel/machConst.h"
  2592.  
  2593.  
  2594.  
  2595.  
  2596.  
  2597.  
  2598.  
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.  
  2610.  
  2611. # 22 "/sprite/lib/include/kernel/machConst.h"
  2612.  
  2613.  
  2614. # 1 "/sprite/lib/include/kernel/vm3maxConst.h"
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620.  
  2621.  
  2622.  
  2623.  
  2624.  
  2625.  
  2626.  
  2627.  
  2628.  
  2629.  
  2630.  
  2631.  
  2632.  
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744.  
  2745.  
  2746.  
  2747.  
  2748.  
  2749.  
  2750.  
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.  
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807. # 24 "/sprite/lib/include/kernel/machConst.h"
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818.  
  2819.  
  2820.  
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828.  
  2829.  
  2830.  
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.  
  2847.  
  2848.  
  2849.  
  2850.  
  2851.  
  2852.  
  2853.  
  2854.  
  2855.  
  2856.  
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.  
  2879.  
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888.  
  2889.  
  2890.  
  2891.  
  2892.  
  2893.  
  2894.  
  2895.  
  2896.  
  2897.  
  2898.  
  2899.  
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.  
  2984.  
  2985.  
  2986.  
  2987.  
  2988.  
  2989.  
  2990.  
  2991.  
  2992.  
  2993.  
  2994.  
  2995.  
  2996.                 
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.  
  3045.  
  3046.  
  3047.  
  3048.  
  3049.  
  3050.  
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056.  
  3057.  
  3058.  
  3059.  
  3060.  
  3061.  
  3062.  
  3063.  
  3064.  
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.  
  3081.  
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113.  
  3114.  
  3115.  
  3116.  
  3117.  
  3118.  
  3119.  
  3120.  
  3121.  
  3122.  
  3123.  
  3124.  
  3125.  
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.  
  3139.  
  3140.  
  3141.  
  3142.  
  3143.  
  3144.  
  3145.  
  3146.  
  3147.  
  3148.  
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155. # 371 "/sprite/lib/include/kernel/machConst.h"
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.  
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.  
  3255.  
  3256.  
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266.  
  3267.  
  3268.  
  3269.  
  3270.  
  3271.  
  3272.  
  3273.  
  3274.  
  3275.  
  3276.  
  3277.  
  3278.  
  3279.  
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.  
  3289.  
  3290.  
  3291. # 25 "/sprite/lib/include/kernel/machTypes.h"
  3292.  
  3293. # 1 "/sprite/lib/include/fmt.h"
  3294.  
  3295.  
  3296.  
  3297.  
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.  
  3313.  
  3314.  
  3315. # 1 "/sprite/lib/include/cfuncproto.h"
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349. # 76 "/sprite/lib/include/cfuncproto.h"
  3350.  
  3351.  
  3352. # 22 "/sprite/lib/include/fmt.h"
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366. typedef int Fmt_Format;
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383. # 54 "/sprite/lib/include/fmt.h"
  3384.  
  3385. # 57 "/sprite/lib/include/fmt.h"
  3386.  
  3387.  
  3388.  
  3389.  
  3390. # 63 "/sprite/lib/include/fmt.h"
  3391.  
  3392. # 66 "/sprite/lib/include/fmt.h"
  3393.  
  3394. # 69 "/sprite/lib/include/fmt.h"
  3395.  
  3396.  
  3397.  
  3398.  
  3399. extern int Fmt_Convert 
  3400.  
  3401.  
  3402.     ();
  3403. extern int Fmt_Size 
  3404.  
  3405.     ();
  3406.  
  3407.  
  3408.  
  3409. # 26 "/sprite/lib/include/kernel/machTypes.h"
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415. typedef enum {
  3416.     MACH_USER,
  3417.     MACH_KERNEL
  3418. } Mach_ProcessorStates;
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.  
  3430.  
  3431. typedef struct {
  3432.     Address        pc;            
  3433.     unsigned        regs[32];    
  3434.     unsigned        fpRegs[32];    
  3435.  
  3436.     unsigned        fpStatusReg;        
  3437.  
  3438.     unsigned        mflo, mfhi;        
  3439.  
  3440. } Mach_RegState;
  3441.  
  3442.  
  3443.  
  3444.  
  3445. typedef struct {
  3446.     Mach_RegState    regState;        
  3447.  
  3448.     int            unixRetVal;        
  3449.  
  3450.     int                 savedV0, savedA3;       
  3451. } Mach_UserState;
  3452.  
  3453.  
  3454.  
  3455.  
  3456. typedef struct Mach_State {
  3457.     Mach_UserState    userState;        
  3458.     Mach_RegState    switchRegState;        
  3459.  
  3460.     Address        kernStackStart;        
  3461.  
  3462.     Address        kernStackEnd;        
  3463.  
  3464.     unsigned        sstepInst;        
  3465.  
  3466.  
  3467.     unsigned        tlbHighEntry;        
  3468.  
  3469.     unsigned        tlbLowEntries[4 - 1];
  3470.                             
  3471.  
  3472.  
  3473. } Mach_State;
  3474.  
  3475.  
  3476.  
  3477.  
  3478. typedef struct {
  3479.     int              break1Inst;    
  3480.  
  3481.     Mach_UserState    userState;    
  3482.  
  3483.     unsigned        fpRegs[32];    
  3484.  
  3485.     unsigned        fpStatusReg;        
  3486.  
  3487. } Mach_SigContext;
  3488.  
  3489.  
  3490.  
  3491.  
  3492. typedef struct {
  3493.     int        regs[32];
  3494.     int        fpRegs[32];
  3495.     unsigned    sig[32];
  3496.     unsigned    excPC;
  3497.     unsigned    causeReg;
  3498.     unsigned    multHi;
  3499.     unsigned    multLo;
  3500.     unsigned    fpCSR;
  3501.     unsigned    fpEIR;
  3502.     unsigned    trapCause;
  3503.     unsigned    trapInfo;
  3504.     unsigned    tlbIndex;
  3505.     unsigned    tlbRandom;
  3506.     unsigned    tlbLow;
  3507.     unsigned    tlbContext;
  3508.     unsigned    badVaddr;
  3509.     unsigned    tlbHi;
  3510.     unsigned    statusReg;
  3511. } Mach_DebugState;
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517. typedef struct {
  3518.     char    revision[9];    
  3519.     char    vendor[9];    
  3520.     char    module[9];    
  3521.     char    type[5];    
  3522. } Mach_SlotInfo;
  3523.  
  3524.  
  3525. # 23 "/sprite/lib/include/kernel/sigTypes.h"
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531. # 31 "/sprite/lib/include/kernel/sigTypes.h"
  3532.  
  3533.  
  3534. # 1 "/sprite/lib/include/sig.h"
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.  
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559.  
  3560.  
  3561.  
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580. typedef    struct {
  3581.     int        action;
  3582.     int        (*handler)();
  3583.     int        sigHoldMask;
  3584. } Sig_Action;
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.  
  3660.  
  3661.  
  3662.  
  3663.  
  3664.  
  3665.  
  3666.  
  3667.  
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.  
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682. # 33 "/sprite/lib/include/kernel/sigTypes.h"
  3683.  
  3684. # 1 "/sprite/lib/include/kernel/procTypes.h"
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.  
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.  
  3777.  
  3778.  
  3779.  
  3780.  
  3781.  
  3782.  
  3783.  
  3784.  
  3785.  
  3786.  
  3787.  
  3788.  
  3789.  
  3790.  
  3791.  
  3792.  
  3793.  
  3794.  
  3795.  
  3796.  
  3797.  
  3798.  
  3799.  
  3800.  
  3801.  
  3802.  
  3803.  
  3804.  
  3805.  
  3806.  
  3807.  
  3808.  
  3809.  
  3810.  
  3811.  
  3812.  
  3813.  
  3814.  
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.  
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.  
  3835.  
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904.  
  3905.  
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.  
  3916.  
  3917.  
  3918.  
  3919.  
  3920.  
  3921.  
  3922.  
  3923.  
  3924.  
  3925.  
  3926.  
  3927.  
  3928.  
  3929.  
  3930.  
  3931.  
  3932.  
  3933.  
  3934.  
  3935.  
  3936.  
  3937.  
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958. # 542 "/sprite/lib/include/kernel/procTypes.h"
  3959.  
  3960. # 34 "/sprite/lib/include/kernel/sigTypes.h"
  3961.  
  3962.  
  3963.  
  3964.  
  3965.  
  3966. typedef struct {
  3967.     int            oldHoldMask;    
  3968.  
  3969.  
  3970.     Mach_SigContext    machContext;    
  3971.  
  3972. } Sig_Context;
  3973.  
  3974.  
  3975.  
  3976.  
  3977.  
  3978.  
  3979. typedef struct {
  3980.     int        sigNum;        
  3981.     int        sigCode;        
  3982.     Sig_Context    *contextPtr;    
  3983.  
  3984.     int        sigAddr;    
  3985.     int        pad;        
  3986. } Sig_Stack;
  3987.  
  3988.  
  3989.  
  3990. # 234 "/sprite/lib/include/proc.h"
  3991.  
  3992. # 1 "/sprite/lib/include/kernel/machTypes.h"
  3993.  
  3994.  
  3995.  
  3996.  
  3997.  
  3998.  
  3999.  
  4000.  
  4001.  
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.  
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.  
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030.  
  4031.  
  4032.  
  4033.  
  4034.  
  4035.  
  4036.  
  4037.  
  4038.  
  4039.  
  4040.  
  4041.  
  4042.  
  4043.  
  4044.  
  4045.  
  4046. # 140 "/sprite/lib/include/kernel/machTypes.h"
  4047.  
  4048. # 235 "/sprite/lib/include/proc.h"
  4049.  
  4050. # 1 "/sprite/lib/include/vmTypes.h"
  4051.  
  4052.  
  4053.  
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072. # 1 "/sprite/lib/include/sprite.h"
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.  
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.  
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096.  
  4097.  
  4098.  
  4099.  
  4100.  
  4101.  
  4102.  
  4103.  
  4104.  
  4105.  
  4106.  
  4107.  
  4108.  
  4109.  
  4110.  
  4111.  
  4112.  
  4113. # 97 "/sprite/lib/include/sprite.h"
  4114.  
  4115. # 22 "/sprite/lib/include/vmTypes.h"
  4116.  
  4117.  
  4118.  
  4119.  
  4120.  
  4121.  
  4122.  
  4123.  
  4124.  
  4125.  
  4126.  
  4127.  
  4128.  
  4129.  
  4130.  
  4131.  
  4132.  
  4133.  
  4134.  
  4135.  
  4136.  
  4137.  
  4138.  
  4139.  
  4140.  
  4141.  
  4142.  
  4143.  
  4144.  
  4145.  
  4146.  
  4147.  
  4148.  
  4149.  
  4150.  
  4151.  
  4152.  
  4153.  
  4154.  
  4155.  
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162.  
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.  
  4204.  
  4205.  
  4206.  
  4207.  
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.  
  4232. typedef int Vm_SegmentID;
  4233.  
  4234.  
  4235.  
  4236.  
  4237.  
  4238. typedef struct Vm_SegmentInfo {
  4239.     int            segNum;        
  4240.     int         refCount;    
  4241.  
  4242.                         
  4243.  
  4244.     char        objFileName[50];
  4245.     int               type;        
  4246.     int            numPages;    
  4247.     int            ptSize;        
  4248.     int            resPages;    
  4249.  
  4250.     int            flags;        
  4251.  
  4252.     int            ptUserCount;    
  4253.  
  4254.     int            numCOWPages;    
  4255.  
  4256.     int            numCORPages;    
  4257.  
  4258.     Address        minAddr;    
  4259.  
  4260.     Address        maxAddr;    
  4261.  
  4262.     int            traceTime;    
  4263.  
  4264. } Vm_SegmentInfo;
  4265.  
  4266.  
  4267.  
  4268. # 236 "/sprite/lib/include/proc.h"
  4269.  
  4270.  
  4271.  
  4272.  
  4273.  
  4274.  
  4275.  
  4276.  
  4277.  
  4278.  
  4279.  
  4280.  
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.  
  4288. typedef struct {
  4289.     Time kernelCpuUsage;    
  4290.     Time userCpuUsage;        
  4291.  
  4292.     Time childKernelCpuUsage;    
  4293.  
  4294.     Time childUserCpuUsage;    
  4295.  
  4296.     int    numQuantumEnds;        
  4297.  
  4298.     int numWaitEvents;        
  4299.  
  4300.  
  4301. } Proc_ResUsage;
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307. typedef enum {
  4308.     PROC_GET_THIS_DEBUG,
  4309.     PROC_GET_NEXT_DEBUG,
  4310.     PROC_CONTINUE,
  4311.     PROC_SINGLE_STEP,
  4312.     PROC_GET_DBG_STATE,
  4313.     PROC_SET_DBG_STATE,
  4314.     PROC_READ,
  4315.     PROC_WRITE,
  4316.     PROC_DETACH_DEBUGGER
  4317. } Proc_DebugReq;
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334. typedef struct {
  4335.     Proc_PID    processID;        
  4336.     int    termReason;            
  4337.  
  4338.     int    termStatus;            
  4339.  
  4340.     int    termCode;            
  4341.     Mach_RegState regState;        
  4342.     int    sigHoldMask;            
  4343.     int    sigPendingMask;            
  4344.     int    sigActions[        32];     
  4345.  
  4346.     int    sigMasks[        32];     
  4347.  
  4348.     int    sigCodes[        32];     
  4349.  
  4350.  
  4351. } Proc_DebugState;
  4352.  
  4353.  
  4354.  
  4355.  
  4356.  
  4357. typedef struct {
  4358.     char *name;        
  4359.     char *value;    
  4360. } Proc_EnvironVar;
  4361.  
  4362.  
  4363.  
  4364.  
  4365. typedef struct  {
  4366.     int        processor;    
  4367.  
  4368.  
  4369.  
  4370.     Proc_State    state;        
  4371.  
  4372.  
  4373.     int        genFlags;    
  4374.  
  4375.  
  4376.     
  4377.  
  4378.  
  4379.  
  4380.  
  4381.  
  4382.  
  4383.  
  4384.  
  4385.  
  4386.  
  4387.  
  4388.     Proc_PID    processID;        
  4389.  
  4390.  
  4391.  
  4392.     Proc_PID    parentID;        
  4393.  
  4394.     int        familyID;        
  4395.  
  4396.     int        userID;            
  4397.  
  4398.  
  4399.     int        effectiveUserID;    
  4400.  
  4401.  
  4402.     
  4403.  
  4404.  
  4405.  
  4406.  
  4407.  
  4408.  
  4409.  
  4410.  
  4411.  
  4412.     int         event;         
  4413.  
  4414.     
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.     int      billingRate;    
  4424.  
  4425.     unsigned int recentUsage;    
  4426.     unsigned int weightedUsage;    
  4427.  
  4428.     unsigned int unweightedUsage; 
  4429.  
  4430.  
  4431.     
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.     Time kernelCpuUsage;    
  4440.     Time userCpuUsage;        
  4441.  
  4442.     Time childKernelCpuUsage;    
  4443.  
  4444.     Time childUserCpuUsage;    
  4445.  
  4446.     int     numQuantumEnds;        
  4447.  
  4448.  
  4449.     int        numWaitEvents;        
  4450.  
  4451.  
  4452.     unsigned int schedQuantumTicks;    
  4453.  
  4454.  
  4455.     
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.     Vm_SegmentID        vmSegments[    4];
  4463.  
  4464.  
  4465.     
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.  
  4473.     int        sigHoldMask;        
  4474.     int        sigPendingMask;        
  4475.                         
  4476.  
  4477.     int        sigActions[        32];
  4478.                         
  4479.  
  4480.     
  4481.  
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.     int        peerHostID;         
  4488.  
  4489.  
  4490.     Proc_PID    peerProcessID;         
  4491.  
  4492. } Proc_PCBInfo;
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.  
  4524.  
  4525.  
  4526.  
  4527.  
  4528. typedef struct {
  4529.     Time    interval;    
  4530.     Time    curValue;    
  4531. } Proc_TimerInterval;
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547. typedef struct {
  4548.     char argString[256];
  4549. } Proc_PCBArgString;
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.  
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588. # 555 "/sprite/lib/include/proc.h"
  4589.  
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595.  
  4596.  
  4597.  
  4598.  
  4599.  
  4600. extern ReturnStatus Proc_SetExitHandler();
  4601. extern void        Proc_Exit();
  4602.  
  4603.  
  4604.  
  4605.  
  4606.  
  4607. extern ReturnStatus Proc_Fork();
  4608. extern void        Proc_RawExit();
  4609. extern ReturnStatus Proc_Detach();
  4610. extern ReturnStatus Proc_Wait();
  4611. extern ReturnStatus Proc_RawWait();
  4612. extern ReturnStatus Proc_Exec();
  4613. extern ReturnStatus Proc_ExecEnv();
  4614.  
  4615. extern ReturnStatus Proc_GetIDs();
  4616. extern ReturnStatus Proc_SetIDs();
  4617. extern ReturnStatus Proc_GetGroupIDs();
  4618. extern ReturnStatus Proc_SetGroupIDs();
  4619. extern ReturnStatus Proc_GetFamilyID();
  4620. extern ReturnStatus Proc_SetFamilyID();
  4621.  
  4622. extern ReturnStatus Proc_GetPCBInfo();
  4623. extern ReturnStatus Proc_GetResUsage();
  4624. extern ReturnStatus Proc_GetPriority();
  4625. extern ReturnStatus Proc_SetPriority();
  4626.  
  4627. extern ReturnStatus Proc_Debug();
  4628. extern ReturnStatus Proc_Profile();
  4629.  
  4630. extern ReturnStatus Proc_SetIntervalTimer();
  4631. extern ReturnStatus Proc_GetIntervalTimer();
  4632.  
  4633. extern ReturnStatus Proc_SetEnviron();
  4634. extern ReturnStatus Proc_UnsetEnviron();
  4635. extern ReturnStatus Proc_GetEnvironVar();
  4636. extern ReturnStatus Proc_GetEnvironRange();
  4637. extern ReturnStatus Proc_InstallEnviron();
  4638. extern ReturnStatus Proc_CopyEnviron();
  4639.  
  4640. extern ReturnStatus Proc_Migrate();
  4641.  
  4642.  
  4643.  
  4644.  
  4645. # 34 "/sprite/lib/include/kernel/procTypes.h"
  4646.  
  4647. # 1 "/sprite/lib/include/sync.h"
  4648.  
  4649.  
  4650.  
  4651.  
  4652.  
  4653.  
  4654.  
  4655.  
  4656.  
  4657.  
  4658.  
  4659.  
  4660.  
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666.  
  4667.  
  4668.  
  4669.  
  4670.  
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678. # 33 "/sprite/lib/include/sync.h"
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.  
  4692.  
  4693.  
  4694.  
  4695.  
  4696. typedef struct Sync_UserLock {
  4697.     Boolean inUse;        
  4698.     Boolean waiting;        
  4699. } Sync_UserLock;
  4700.  
  4701.  
  4702. typedef Sync_UserLock Sync_Lock;     
  4703.  
  4704.  
  4705.  
  4706.  
  4707.  
  4708.  
  4709.  
  4710.  
  4711.  
  4712.  
  4713.  
  4714. typedef struct Sync_Condition {
  4715.     Boolean waiting;        
  4716. } Sync_Condition;
  4717.  
  4718.  
  4719.  
  4720.  
  4721.  
  4722.  
  4723.  
  4724.  
  4725.  
  4726.  
  4727.  
  4728.  
  4729.  
  4730. # 86 "/sprite/lib/include/sync.h"
  4731.  
  4732.  
  4733.  
  4734.  
  4735.  
  4736.  
  4737. typedef struct {
  4738.     int        inUse;                
  4739.     int        class;                
  4740.     int        hit;                
  4741.     int        miss;                
  4742.     char    name[30];            
  4743.     int        priorCount;            
  4744.     int        priorTypes[1];    
  4745.     int        activeCount;            
  4746.     int        deadCount;            
  4747.     int        spinCount;            
  4748. } Sync_LockStat;
  4749.  
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762.  
  4763.  
  4764.  
  4765.  
  4766.  
  4767.  
  4768.  
  4769.  
  4770.  
  4771.  
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.  
  4812.  
  4813. # 168 "/sprite/lib/include/sync.h"
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822.  
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833.  
  4834.  
  4835.  
  4836.  
  4837.  
  4838.  
  4839.  
  4840.  
  4841.  
  4842.  
  4843.  
  4844. # 198 "/sprite/lib/include/sync.h"
  4845.  
  4846.  
  4847.  
  4848.  
  4849.  
  4850.  
  4851. extern ReturnStatus    Sync_GetLock();
  4852. extern ReturnStatus    Sync_Unlock();
  4853. extern ReturnStatus    Sync_SlowLock();
  4854. extern ReturnStatus    Sync_SlowWait();
  4855. extern ReturnStatus    Sync_SlowBroadcast();
  4856.  
  4857.  
  4858. # 35 "/sprite/lib/include/kernel/procTypes.h"
  4859.  
  4860. # 1 "/sprite/lib/include/kernel/syncLock.h"
  4861.  
  4862.  
  4863.  
  4864.  
  4865.  
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878.  
  4879.  
  4880.  
  4881.  
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888.  
  4889.  
  4890.  
  4891. # 34 "/sprite/lib/include/kernel/syncLock.h"
  4892.  
  4893.  
  4894. # 1 "/sprite/lib/include/list.h"
  4895.  
  4896.  
  4897.  
  4898.  
  4899.  
  4900.  
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915. # 23 "/sprite/lib/include/list.h"
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.  
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969. typedef struct List_Links {
  4970.     struct List_Links *prevPtr;
  4971.     struct List_Links *nextPtr;
  4972. } List_Links;
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978. extern void    List_Init     (); 
  4979.                 
  4980.  
  4981. extern void    List_Insert     ();
  4982.                 
  4983.  
  4984. extern void    List_ListInsert 
  4985.     ();
  4986.                 
  4987.  
  4988. extern void    List_Remove     ();
  4989.                 
  4990.  
  4991. extern void    List_Move     ();
  4992.                 
  4993.  
  4994.  
  4995.  
  4996.  
  4997.  
  4998.  
  4999.  
  5000.  
  5001.  
  5002.  
  5003.  
  5004.  
  5005.  
  5006. # 113 "/sprite/lib/include/list.h"
  5007.  
  5008.     
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040. # 146 "/sprite/lib/include/list.h"
  5041.  
  5042.  
  5043.  
  5044.  
  5045.  
  5046.  
  5047.  
  5048.  
  5049.  
  5050.  
  5051.  
  5052.  
  5053.  
  5054.  
  5055.  
  5056.  
  5057. # 162 "/sprite/lib/include/list.h"
  5058.  
  5059.  
  5060.  
  5061.  
  5062.  
  5063.  
  5064.  
  5065.  
  5066.  
  5067.  
  5068.  
  5069.  
  5070.  
  5071.  
  5072.  
  5073.  
  5074.  
  5075. # 179 "/sprite/lib/include/list.h"
  5076.  
  5077.  
  5078.  
  5079.  
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086.  
  5087.  
  5088.  
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094.  
  5095.  
  5096.  
  5097.  
  5098.  
  5099.  
  5100.  
  5101.  
  5102.  
  5103.  
  5104.  
  5105.  
  5106.  
  5107.  
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.  
  5119.  
  5120.  
  5121.  
  5122.  
  5123.  
  5124.  
  5125.  
  5126.  
  5127.  
  5128.  
  5129.  
  5130.  
  5131.  
  5132.  
  5133.  
  5134.  
  5135.  
  5136.  
  5137.  
  5138.  
  5139.  
  5140.  
  5141.  
  5142.  
  5143.  
  5144.  
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.  
  5156.  
  5157.  
  5158.  
  5159.  
  5160.  
  5161.  
  5162.  
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.  
  5169.  
  5170.  
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176.  
  5177.  
  5178. # 36 "/sprite/lib/include/kernel/syncLock.h"
  5179.  
  5180. # 1 "/sprite/lib/include/sync.h"
  5181.  
  5182.  
  5183.  
  5184.  
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.  
  5193.  
  5194.  
  5195.  
  5196.  
  5197.  
  5198.  
  5199.  
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.  
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218.  
  5219.  
  5220.  
  5221.  
  5222.  
  5223.  
  5224.  
  5225.  
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.  
  5247.  
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253.  
  5254.  
  5255.  
  5256.  
  5257.  
  5258.  
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264.  
  5265.  
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.  
  5291.  
  5292.  
  5293.  
  5294.  
  5295.  
  5296.  
  5297.  
  5298.  
  5299.  
  5300.  
  5301.  
  5302.  
  5303.  
  5304.  
  5305.  
  5306.  
  5307.  
  5308.  
  5309.  
  5310.  
  5311.  
  5312. # 210 "/sprite/lib/include/sync.h"
  5313.  
  5314. # 37 "/sprite/lib/include/kernel/syncLock.h"
  5315.  
  5316.  
  5317.  
  5318.  
  5319.  
  5320.  
  5321. # 46 "/sprite/lib/include/kernel/syncLock.h"
  5322.  
  5323.  
  5324.  
  5325.  
  5326.  
  5327. # 53 "/sprite/lib/include/kernel/syncLock.h"
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333.  
  5334.  
  5335.  
  5336.  
  5337.  
  5338.  
  5339.  
  5340.  
  5341.  
  5342.  
  5343.  
  5344.  
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353. typedef struct Sync_ListInfo {
  5354.     List_Links    links;        
  5355.     Address    lock;        
  5356.  
  5357. } Sync_ListInfo;
  5358.  
  5359.  
  5360. # 85 "/sprite/lib/include/kernel/syncLock.h"
  5361.  
  5362.  
  5363.  
  5364.  
  5365.  
  5366.  
  5367. typedef enum Sync_LockClass {
  5368.     SYNC_SEMAPHORE,            
  5369.     SYNC_LOCK
  5370. } Sync_LockClass;
  5371.  
  5372.  
  5373.  
  5374.  
  5375. typedef struct Sync_Semaphore {
  5376.     
  5377.  
  5378.  
  5379.     int value;                
  5380.  
  5381.  
  5382.  
  5383. # 114 "/sprite/lib/include/kernel/syncLock.h"
  5384.  
  5385.  
  5386.  
  5387.     char *name;                
  5388.     Address holderPC;            
  5389.     struct Proc_ControlBlock *holderPCBPtr; 
  5390.  
  5391.  
  5392.  
  5393. # 126 "/sprite/lib/include/kernel/syncLock.h"
  5394.  
  5395.  
  5396. } Sync_Semaphore;
  5397.  
  5398.  
  5399.  
  5400.  
  5401.  
  5402. typedef struct Sync_KernelLock{
  5403.     
  5404.  
  5405.  
  5406.     Boolean inUse;            
  5407.     Boolean waiting;                
  5408.  
  5409.  
  5410. # 149 "/sprite/lib/include/kernel/syncLock.h"
  5411.  
  5412.  
  5413.  
  5414.     char *name;                
  5415.     Address holderPC;            
  5416.     struct Proc_ControlBlock *holderPCBPtr; 
  5417.  
  5418.  
  5419.  
  5420. # 162 "/sprite/lib/include/kernel/syncLock.h"
  5421.  
  5422. } Sync_KernelLock;
  5423.  
  5424.  
  5425. # 168 "/sprite/lib/include/kernel/syncLock.h"
  5426.  
  5427.  
  5428.  
  5429.  
  5430.  
  5431. # 36 "/sprite/lib/include/kernel/procTypes.h"
  5432.  
  5433. # 1 "/sprite/lib/include/list.h"
  5434.  
  5435.  
  5436.  
  5437.  
  5438.  
  5439.  
  5440.  
  5441.  
  5442.  
  5443.  
  5444.  
  5445.  
  5446.  
  5447.  
  5448.  
  5449.  
  5450.  
  5451.  
  5452.  
  5453.  
  5454.  
  5455.  
  5456.  
  5457.  
  5458.  
  5459.  
  5460.  
  5461.  
  5462.  
  5463.  
  5464.  
  5465.  
  5466.  
  5467.  
  5468.  
  5469.  
  5470.  
  5471.  
  5472.  
  5473.  
  5474.  
  5475.  
  5476.  
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486.  
  5487.  
  5488.  
  5489.  
  5490.  
  5491.  
  5492.  
  5493.  
  5494.  
  5495.  
  5496.  
  5497.  
  5498.  
  5499.  
  5500.  
  5501.  
  5502.  
  5503.  
  5504.  
  5505.  
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.  
  5537.  
  5538.  
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.  
  5546.  
  5547.  
  5548.  
  5549.  
  5550.  
  5551.  
  5552.  
  5553.  
  5554.  
  5555.  
  5556.  
  5557.  
  5558.  
  5559.  
  5560.  
  5561.  
  5562.  
  5563.  
  5564.  
  5565.  
  5566.  
  5567.  
  5568.  
  5569.  
  5570.  
  5571.  
  5572.  
  5573.  
  5574.  
  5575.  
  5576.  
  5577.  
  5578.  
  5579.  
  5580.  
  5581.  
  5582.  
  5583.  
  5584.  
  5585.  
  5586.  
  5587.  
  5588.  
  5589.  
  5590.  
  5591.  
  5592.  
  5593.  
  5594.  
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.  
  5614.  
  5615.  
  5616.  
  5617.  
  5618.  
  5619.  
  5620.  
  5621.  
  5622.  
  5623.  
  5624.  
  5625. # 280 "/sprite/lib/include/list.h"
  5626.  
  5627. # 37 "/sprite/lib/include/kernel/procTypes.h"
  5628.  
  5629. # 1 "/sprite/lib/include/kernel/timer.h"
  5630.  
  5631.  
  5632.  
  5633.  
  5634.  
  5635.  
  5636.  
  5637.  
  5638.  
  5639.  
  5640.  
  5641.  
  5642.  
  5643.  
  5644.  
  5645.  
  5646.  
  5647.  
  5648.  
  5649.  
  5650.  
  5651. # 1 "/sprite/lib/include/list.h"
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664.  
  5665.  
  5666.  
  5667.  
  5668.  
  5669.  
  5670.  
  5671.  
  5672.  
  5673.  
  5674.  
  5675.  
  5676.  
  5677.  
  5678.  
  5679.  
  5680.  
  5681.  
  5682.  
  5683.  
  5684.  
  5685.  
  5686.  
  5687.  
  5688.  
  5689.  
  5690.  
  5691.  
  5692.  
  5693.  
  5694.  
  5695.  
  5696.  
  5697.  
  5698.  
  5699.  
  5700.  
  5701.  
  5702.  
  5703.  
  5704.  
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712.  
  5713.  
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719.  
  5720.  
  5721.  
  5722.  
  5723.  
  5724.  
  5725.  
  5726.  
  5727.  
  5728.  
  5729.  
  5730.  
  5731.  
  5732.  
  5733.  
  5734.  
  5735.  
  5736.  
  5737.  
  5738.  
  5739.  
  5740.  
  5741.  
  5742.  
  5743.  
  5744.  
  5745.  
  5746.  
  5747.  
  5748.  
  5749.  
  5750.  
  5751.  
  5752.  
  5753.  
  5754.  
  5755.  
  5756.  
  5757.  
  5758.  
  5759.  
  5760.  
  5761.  
  5762.  
  5763.  
  5764.  
  5765.  
  5766.  
  5767.  
  5768.  
  5769.  
  5770.  
  5771.  
  5772.  
  5773.  
  5774.  
  5775.  
  5776.  
  5777.  
  5778.  
  5779.  
  5780.  
  5781.  
  5782.  
  5783.  
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.  
  5790.  
  5791.  
  5792.  
  5793.  
  5794.  
  5795.  
  5796.  
  5797.  
  5798.  
  5799.  
  5800.  
  5801.  
  5802.  
  5803.  
  5804.  
  5805.  
  5806.  
  5807.  
  5808.  
  5809.  
  5810.  
  5811.  
  5812.  
  5813.  
  5814.  
  5815.  
  5816.  
  5817.  
  5818.  
  5819.  
  5820.  
  5821.  
  5822.  
  5823.  
  5824.  
  5825.  
  5826.  
  5827.  
  5828.  
  5829.  
  5830.  
  5831.  
  5832.  
  5833.  
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.  
  5841.  
  5842.  
  5843. # 280 "/sprite/lib/include/list.h"
  5844.  
  5845. # 22 "/sprite/lib/include/kernel/timer.h"
  5846.  
  5847. # 28 "/sprite/lib/include/kernel/timer.h"
  5848.  
  5849.  
  5850. # 1 "/sprite/lib/include/spriteTime.h"
  5851.  
  5852.  
  5853.  
  5854.  
  5855.  
  5856.  
  5857.  
  5858.  
  5859.  
  5860.  
  5861.  
  5862.  
  5863.  
  5864.  
  5865.  
  5866.  
  5867.  
  5868.  
  5869.  
  5870.  
  5871.  
  5872.  
  5873.  
  5874.  
  5875.  
  5876.  
  5877.  
  5878.  
  5879.  
  5880.  
  5881.  
  5882.  
  5883.  
  5884.  
  5885.  
  5886.  
  5887.  
  5888.  
  5889.  
  5890.  
  5891.  
  5892.  
  5893.  
  5894.  
  5895. # 145 "/sprite/lib/include/spriteTime.h"
  5896.  
  5897. # 30 "/sprite/lib/include/kernel/timer.h"
  5898.  
  5899. # 1 "/sprite/lib/include/kernel/timerTick.h"
  5900.  
  5901.  
  5902.  
  5903.  
  5904.  
  5905.  
  5906.  
  5907.  
  5908.  
  5909.  
  5910.  
  5911.  
  5912.  
  5913.  
  5914.  
  5915.  
  5916.  
  5917.  
  5918.  
  5919.  
  5920. # 1 "/sprite/lib/include/spriteTime.h"
  5921.  
  5922.  
  5923.  
  5924.  
  5925.  
  5926.  
  5927.  
  5928.  
  5929.  
  5930.  
  5931.  
  5932.  
  5933.  
  5934.  
  5935.  
  5936.  
  5937.  
  5938.  
  5939.  
  5940.  
  5941.  
  5942.  
  5943.  
  5944.  
  5945.  
  5946.  
  5947.  
  5948.  
  5949.  
  5950.  
  5951.  
  5952.  
  5953.  
  5954.  
  5955.  
  5956.  
  5957.  
  5958.  
  5959.  
  5960.  
  5961.  
  5962.  
  5963.  
  5964.  
  5965. # 145 "/sprite/lib/include/spriteTime.h"
  5966.  
  5967. # 21 "/sprite/lib/include/kernel/timerTick.h"
  5968.  
  5969.  
  5970.  
  5971.  
  5972. typedef Time Timer_Ticks;
  5973.  
  5974.  
  5975.  
  5976.  
  5977.  
  5978. extern unsigned int     timer_IntZeroSeconds; 
  5979. extern unsigned int     timer_IntOneMillisecond;   
  5980. extern unsigned int     timer_IntOneSecond;
  5981. extern unsigned int     timer_IntOneMinute;
  5982. extern unsigned int     timer_IntOneHour; 
  5983. extern Timer_Ticks    timer_TicksZeroSeconds;
  5984. extern Time         timer_MaxIntervalTime; 
  5985.  
  5986.  
  5987.  
  5988.  
  5989.  
  5990.  
  5991. # 51 "/sprite/lib/include/kernel/timerTick.h"
  5992.  
  5993.  
  5994.  
  5995.  
  5996.  
  5997.  
  5998.  
  5999.  
  6000.  
  6001.  
  6002.  
  6003. extern void Timer_AddIntervalToTicks 
  6004.     ();
  6005. extern void Timer_GetCurrentTicks     ();
  6006.  
  6007.  
  6008.  
  6009.  
  6010.  
  6011.  
  6012.  
  6013.  
  6014.  
  6015.  
  6016.  
  6017.  
  6018.  
  6019.  
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028. # 93 "/sprite/lib/include/kernel/timerTick.h"
  6029.  
  6030.  
  6031.  
  6032.  
  6033.  
  6034.  
  6035.  
  6036.  
  6037.  
  6038. # 31 "/sprite/lib/include/kernel/timer.h"
  6039.  
  6040. # 1 "/sprite/lib/include/kernel/timerMach.h"
  6041.  
  6042.  
  6043.  
  6044.  
  6045.  
  6046.  
  6047.  
  6048.  
  6049.  
  6050.  
  6051.  
  6052.  
  6053.  
  6054.  
  6055.  
  6056.  
  6057.  
  6058.  
  6059.  
  6060.  
  6061.  
  6062.  
  6063.  
  6064.  
  6065.  
  6066.  
  6067.  
  6068.  
  6069.  
  6070.  
  6071.  
  6072. # 32 "/sprite/lib/include/kernel/timer.h"
  6073.  
  6074. # 1 "/sprite/lib/include/kernel/syncLock.h"
  6075.  
  6076.  
  6077.  
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.  
  6095.  
  6096.  
  6097.  
  6098.  
  6099.  
  6100.  
  6101.  
  6102.  
  6103.  
  6104.  
  6105.  
  6106.  
  6107.  
  6108.  
  6109.  
  6110.  
  6111.  
  6112.  
  6113.  
  6114.  
  6115.  
  6116.  
  6117.  
  6118.  
  6119.  
  6120.  
  6121.  
  6122.  
  6123.  
  6124.  
  6125.  
  6126.  
  6127.  
  6128.  
  6129.  
  6130.  
  6131.  
  6132.  
  6133.  
  6134.  
  6135.  
  6136.  
  6137.  
  6138.  
  6139.  
  6140.  
  6141.  
  6142. # 171 "/sprite/lib/include/kernel/syncLock.h"
  6143.  
  6144.  
  6145. # 33 "/sprite/lib/include/kernel/timer.h"
  6146.  
  6147.  
  6148.  
  6149.  
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155.  
  6156.  
  6157.  
  6158.  
  6159.  
  6160.  
  6161.  
  6162.  
  6163.  
  6164.  
  6165.  
  6166.  
  6167.  
  6168.  
  6169.  
  6170.  
  6171.  
  6172.  
  6173.  
  6174.  
  6175.  
  6176.  
  6177.  
  6178.  
  6179.  
  6180.  
  6181.  
  6182.  
  6183.  
  6184.  
  6185.  
  6186.  
  6187.  
  6188.  
  6189.  
  6190.  
  6191.  
  6192.  
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214.  
  6215.  
  6216.  
  6217.  
  6218.  
  6219.  
  6220.  
  6221.  
  6222.  
  6223.  
  6224.  
  6225.  
  6226.  
  6227.  
  6228.  
  6229.  
  6230.  
  6231.  
  6232.  
  6233.  
  6234.  
  6235.  
  6236.  
  6237.  
  6238.  
  6239.  
  6240.  
  6241.  
  6242.  
  6243.  
  6244.  
  6245.  
  6246.  
  6247.  
  6248.  
  6249.  
  6250.  
  6251.  
  6252.  
  6253.  
  6254.  
  6255.  
  6256.  
  6257.  
  6258.  
  6259.  
  6260.  
  6261.  
  6262.  
  6263.  
  6264.  
  6265.  
  6266.  
  6267.  
  6268.  
  6269.  
  6270.  
  6271.  
  6272.  
  6273.  
  6274.  
  6275.  
  6276.  
  6277.  
  6278.  
  6279.  
  6280.  
  6281.  
  6282.  
  6283.  
  6284.  
  6285.  
  6286.  
  6287.  
  6288.  
  6289.  
  6290.  
  6291.  
  6292.  
  6293.  
  6294.  
  6295.  
  6296.  
  6297.  
  6298.  
  6299.  
  6300.  
  6301.  
  6302.  
  6303.  
  6304.  
  6305.  
  6306.  
  6307.  
  6308.  
  6309.  
  6310.  
  6311.  
  6312.  
  6313. typedef struct {
  6314.     List_Links    links;        
  6315.  
  6316.     void    (*routine) 
  6317.     ();    
  6318.                     
  6319.     Timer_Ticks    time;        
  6320.  
  6321.     ClientData    clientData;    
  6322.  
  6323.  
  6324.     Boolean    processed;    
  6325.  
  6326.  
  6327.     unsigned int interval;    
  6328.  
  6329.  
  6330. } Timer_QueueElement;
  6331.  
  6332.  
  6333.  
  6334.  
  6335.  
  6336. typedef struct {
  6337.     int        callback;    
  6338.     int        profile;    
  6339.     int        spurious;    
  6340.     int        schedule;    
  6341.     int        resched;    
  6342.     int        desched;    
  6343. } Timer_Statistics;
  6344.  
  6345. extern Timer_Statistics    timer_Statistics;
  6346. extern Time        timer_UniversalApprox;
  6347. extern Sync_Semaphore     timer_ClockMutex;
  6348.  
  6349. # 240 "/sprite/lib/include/kernel/timer.h"
  6350.  
  6351.  
  6352.  
  6353.  
  6354.  
  6355.  
  6356.  
  6357.  
  6358.  
  6359. extern void Timer_Init     ();
  6360. extern void Timer_ScheduleRoutine 
  6361.     ();
  6362. extern Boolean Timer_DescheduleRoutine 
  6363.     ();
  6364. extern void Timer_GetTimeOfDay 
  6365.     ();
  6366. extern void Timer_GetRealTimeOfDay 
  6367.     ();
  6368. extern void Timer_GetRealTimeFromTicks 
  6369.  
  6370.     ();
  6371. extern void Timer_SetTimeOfDay 
  6372.     ();
  6373. # 267 "/sprite/lib/include/kernel/timer.h"
  6374.  
  6375.  
  6376.  
  6377.  
  6378.  
  6379.  
  6380.  
  6381.  
  6382. extern void Timer_TimerInit     ();
  6383. extern void Timer_TimerStart     ();
  6384. extern void Timer_TimerInactivate     ();
  6385.  
  6386.  
  6387.  
  6388.  
  6389.  
  6390. extern void Timer_TimerGetInfo     ();
  6391. extern void Timer_DumpQueue     ();
  6392. extern void Timer_DumpStats     ();
  6393.  
  6394.  
  6395. # 38 "/sprite/lib/include/kernel/procTypes.h"
  6396.  
  6397. # 1 "/sprite/lib/include/kernel/sigTypes.h"
  6398.  
  6399.  
  6400.  
  6401.  
  6402.  
  6403.  
  6404.  
  6405.  
  6406.  
  6407.  
  6408.  
  6409.  
  6410.  
  6411.  
  6412.  
  6413.  
  6414.  
  6415.  
  6416. # 21 "/sprite/lib/include/kernel/sigTypes.h"
  6417.  
  6418.  
  6419. # 1 "/sprite/lib/include/kernel/machTypes.h"
  6420.  
  6421.  
  6422.  
  6423.  
  6424.  
  6425.  
  6426.  
  6427.  
  6428.  
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434.  
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441.  
  6442.  
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455.  
  6456.  
  6457.  
  6458.  
  6459.  
  6460.  
  6461.  
  6462.  
  6463.  
  6464.  
  6465.  
  6466.  
  6467.  
  6468.  
  6469.  
  6470.  
  6471.  
  6472.  
  6473. # 140 "/sprite/lib/include/kernel/machTypes.h"
  6474.  
  6475. # 23 "/sprite/lib/include/kernel/sigTypes.h"
  6476.  
  6477.  
  6478.  
  6479.  
  6480.  
  6481.  
  6482.  
  6483.  
  6484.  
  6485.  
  6486.  
  6487.  
  6488. # 61 "/sprite/lib/include/kernel/sigTypes.h"
  6489.  
  6490.  
  6491. # 39 "/sprite/lib/include/kernel/procTypes.h"
  6492.  
  6493. # 1 "/sprite/lib/include/kernel/machTypes.h"
  6494.  
  6495.  
  6496.  
  6497.  
  6498.  
  6499.  
  6500.  
  6501.  
  6502.  
  6503.  
  6504.  
  6505.  
  6506.  
  6507.  
  6508.  
  6509.  
  6510.  
  6511.  
  6512.  
  6513.  
  6514.  
  6515.  
  6516.  
  6517.  
  6518.  
  6519.  
  6520.  
  6521.  
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.  
  6528.  
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.  
  6547. # 140 "/sprite/lib/include/kernel/machTypes.h"
  6548.  
  6549. # 40 "/sprite/lib/include/kernel/procTypes.h"
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.  
  6557.  
  6558.  
  6559.  
  6560.  
  6561.  
  6562.  
  6563.  
  6564.  
  6565.  
  6566.  
  6567.  
  6568.  
  6569.  
  6570.  
  6571.  
  6572.  
  6573.  
  6574.  
  6575.  
  6576.  
  6577.  
  6578.  
  6579.  
  6580.  
  6581.  
  6582.  
  6583.  
  6584.  
  6585.  
  6586.  
  6587.  
  6588.  
  6589.  
  6590.  
  6591.  
  6592.  
  6593.  
  6594.  
  6595.  
  6596. typedef struct {
  6597.     unsigned int    interval;    
  6598.  
  6599.     ClientData        clientData;    
  6600.     ClientData        token;        
  6601. } Proc_CallInfo;
  6602.  
  6603.  
  6604.  
  6605.  
  6606.  
  6607. typedef struct {
  6608.     int            refCount;    
  6609.  
  6610.     int            size;        
  6611.     struct ProcEnvironVar *varArray;    
  6612. } Proc_EnvironInfo;
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623. typedef struct {
  6624.     List_Links links;            
  6625.     struct Proc_ControlBlock *procPtr;    
  6626. } Proc_PCBLink;
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632.  
  6633.  
  6634.  
  6635.  
  6636. typedef union {
  6637.     Timer_Ticks    ticks;    
  6638.     Time    time;    
  6639. } Proc_Time;
  6640.  
  6641. typedef struct {
  6642.     int        type;        
  6643.     Address    lockPtr;    
  6644. } Proc_LockStackElement;
  6645.  
  6646.  
  6647.  
  6648.  
  6649.  
  6650.  
  6651.  
  6652.  
  6653. typedef struct Proc_ControlBlock {
  6654.     List_Links    links;        
  6655.  
  6656.     int        processor;    
  6657.  
  6658.  
  6659.  
  6660.     Proc_State    state;        
  6661.  
  6662.  
  6663.  
  6664.     int        genFlags;    
  6665.  
  6666.     int        syncFlags;    
  6667.     int        schedFlags;    
  6668.     int        exitFlags;    
  6669.  
  6670.  
  6671.     List_Links        childListHdr;    
  6672.     List_Links        *childList;    
  6673.     Proc_PCBLink    siblingElement;    
  6674.  
  6675.     Proc_PCBLink    familyElement;    
  6676.  
  6677.  
  6678.     
  6679.  
  6680.  
  6681.  
  6682.  
  6683.  
  6684.  
  6685.  
  6686.  
  6687.  
  6688.  
  6689.  
  6690.     Proc_PID    processID;        
  6691.  
  6692.  
  6693.  
  6694.     Proc_PID    parentID;        
  6695.  
  6696.     int        familyID;        
  6697.  
  6698.     int        userID;            
  6699.  
  6700.  
  6701.     int        effectiveUserID;    
  6702.  
  6703.  
  6704.     
  6705.  
  6706.  
  6707.  
  6708.  
  6709.  
  6710.  
  6711.  
  6712.  
  6713.  
  6714.  
  6715.     int         event;         
  6716.     Proc_PCBLink eventHashChain; 
  6717.  
  6718.     
  6719.  
  6720.  
  6721.  
  6722.     Sync_Condition    waitCondition;
  6723.     Sync_Condition    lockedCondition;
  6724.  
  6725.     
  6726.  
  6727.  
  6728.  
  6729.  
  6730.     int            waitToken;
  6731.  
  6732.     
  6733.  
  6734.  
  6735.  
  6736.  
  6737.  
  6738.  
  6739.  
  6740.  
  6741.     int      billingRate;    
  6742.  
  6743.     unsigned int recentUsage;    
  6744.     unsigned int weightedUsage;    
  6745.  
  6746.     unsigned int unweightedUsage; 
  6747.  
  6748.  
  6749.     
  6750.  
  6751.  
  6752.  
  6753.  
  6754.  
  6755.  
  6756.  
  6757.     Proc_Time kernelCpuUsage;    
  6758.     Proc_Time userCpuUsage;    
  6759.  
  6760.     Proc_Time childKernelCpuUsage;    
  6761.  
  6762.     Proc_Time childUserCpuUsage;    
  6763.  
  6764.     int     numQuantumEnds;        
  6765.  
  6766.  
  6767.     int        numWaitEvents;        
  6768.  
  6769.  
  6770.     unsigned int schedQuantumTicks;    
  6771.  
  6772.  
  6773.  
  6774.     
  6775.  
  6776.  
  6777.  
  6778.  
  6779.  
  6780.  
  6781.  
  6782.  
  6783.     struct    Mach_State    *machStatePtr;
  6784.  
  6785.  
  6786.     
  6787.  
  6788.  
  6789.  
  6790.  
  6791.  
  6792.  
  6793.     struct    Vm_ProcInfo    *vmPtr;
  6794.  
  6795.     
  6796.  
  6797.  
  6798.  
  6799.  
  6800.  
  6801.  
  6802.  
  6803.     struct Fs_ProcessState    *fsPtr;
  6804.  
  6805.     
  6806.  
  6807.  
  6808.  
  6809.  
  6810.  
  6811.  
  6812.  
  6813.     int    termReason;        
  6814.  
  6815.                 
  6816.     int    termStatus;        
  6817.  
  6818.                 
  6819.     int    termCode;        
  6820.                 
  6821.  
  6822.  
  6823.     
  6824.  
  6825.  
  6826.  
  6827.  
  6828.  
  6829.  
  6830.  
  6831.     int        sigHoldMask;        
  6832.     int        sigPendingMask;        
  6833.  
  6834.  
  6835.                         
  6836.  
  6837.     int        sigActions[        32];
  6838.                         
  6839.  
  6840.     int        sigMasks[        32];
  6841.                     
  6842.  
  6843.     int        sigCodes[        32];
  6844.     int        sigFlags;        
  6845.  
  6846.     int        oldSigHoldMask;        
  6847.  
  6848.     int        sigAddr;        
  6849.  
  6850.     
  6851.  
  6852.  
  6853.  
  6854.  
  6855.  
  6856.     struct ProcIntTimerInfo    *timerArray;
  6857.  
  6858.     
  6859.  
  6860.  
  6861.  
  6862.  
  6863.  
  6864.  
  6865.     int            peerHostID;    
  6866.  
  6867.  
  6868.     Proc_PID        peerProcessID;     
  6869.  
  6870.     struct Proc_ControlBlock
  6871.                  *rpcClientProcess;    
  6872.  
  6873.  
  6874.  
  6875.     
  6876.  
  6877.  
  6878.  
  6879.  
  6880.  
  6881.  
  6882.  
  6883.     
  6884.  
  6885.  
  6886.     Proc_EnvironInfo    *environPtr;
  6887.  
  6888.     
  6889.  
  6890.  
  6891.     char    *argString;
  6892.  
  6893.  
  6894.  
  6895. # 389 "/sprite/lib/include/kernel/procTypes.h"
  6896.  
  6897.  
  6898.  
  6899.     
  6900.  
  6901.  
  6902.  
  6903.  
  6904.  
  6905.      Sync_Semaphore        lockInfo;
  6906.  
  6907.  
  6908.     
  6909.  
  6910.  
  6911.  
  6912.  
  6913.  
  6914.  
  6915.     ReturnStatus (**kcallTable)();    
  6916.  
  6917.  
  6918.  
  6919.  
  6920.  
  6921.     int specialHandling;        
  6922.  
  6923.  
  6924.  
  6925.  
  6926.  
  6927.     
  6928.  
  6929.  
  6930.  
  6931.  
  6932.  
  6933.  
  6934.  
  6935.      short *Prof_Buffer;    
  6936.  
  6937.      int Prof_BufferSize;   
  6938.      int Prof_Offset;       
  6939.      int Prof_Scale;        
  6940.  
  6941.      int Prof_PC;           
  6942.  
  6943.  
  6944.     
  6945.  
  6946.  
  6947.  
  6948.     Address    remoteExecBuffer;     
  6949.  
  6950.     Address    migCmdBuffer;         
  6951.  
  6952.     int        migCmdBufSize;         
  6953.  
  6954.     int        migFlags;         
  6955.  
  6956.  
  6957.  
  6958.     Proc_Time   preEvictionUsage;      
  6959.  
  6960.  
  6961.  
  6962.     
  6963.  
  6964.  
  6965.  
  6966.     int         unixErrno;               
  6967.     
  6968.  
  6969.  
  6970.  
  6971.  
  6972.     int         unixProgress;            
  6973.  
  6974.  
  6975.     
  6976.  
  6977.  
  6978.  
  6979.  
  6980.  
  6981.  
  6982.  
  6983.  
  6984.     int        extraField[10];        
  6985.  
  6986. } Proc_ControlBlock;
  6987.  
  6988.  
  6989.  
  6990.  
  6991.  
  6992.  
  6993.  
  6994.  
  6995.  
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.  
  7010.  
  7011.  
  7012.  
  7013.  
  7014.  
  7015.  
  7016.  
  7017. typedef enum {
  7018.     PROC_MIG_ENCAP_PROC,
  7019.     PROC_MIG_ENCAP_VM,
  7020.     PROC_MIG_ENCAP_FS,
  7021.     PROC_MIG_ENCAP_MACH,
  7022.     PROC_MIG_ENCAP_PROF,
  7023.     PROC_MIG_ENCAP_SIG,
  7024.     PROC_MIG_ENCAP_EXEC
  7025. } Proc_EncapToken;
  7026.  
  7027.  
  7028.  
  7029.  
  7030.  
  7031.  
  7032.  
  7033.  
  7034.  
  7035.  
  7036. typedef struct {
  7037.     Proc_EncapToken    token;        
  7038.     int            size;        
  7039.     ClientData        data;        
  7040.     int            special;    
  7041.     ClientData        specialToken;    
  7042.     int            processed;    
  7043.  
  7044.  
  7045.  
  7046.  
  7047. } Proc_EncapInfo;
  7048.  
  7049.  
  7050. # 24 "/sprite/lib/include/fs.h"
  7051.  
  7052.  
  7053.  
  7054.  
  7055.  
  7056.  
  7057.  
  7058.  
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.  
  7071.  
  7072.  
  7073.  
  7074.  
  7075.  
  7076.  
  7077.  
  7078.  
  7079.  
  7080.  
  7081.  
  7082.  
  7083.  
  7084.  
  7085.  
  7086.  
  7087.  
  7088.  
  7089.  
  7090.  
  7091.  
  7092.  
  7093.  
  7094.  
  7095.  
  7096.  
  7097.  
  7098.  
  7099.  
  7100.  
  7101.  
  7102.  
  7103.  
  7104.  
  7105.  
  7106.  
  7107.  
  7108.  
  7109.  
  7110.  
  7111.  
  7112.  
  7113.  
  7114.  
  7115.  
  7116.  
  7117.  
  7118.  
  7119.  
  7120.  
  7121.  
  7122.  
  7123.  
  7124.  
  7125.  
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.  
  7132.  
  7133.  
  7134.  
  7135.  
  7136.  
  7137.  
  7138.  
  7139.  
  7140.  
  7141.  
  7142.  
  7143.  
  7144. typedef struct Fs_Attributes {
  7145.     int    serverID;        
  7146.     int domain;            
  7147.     int fileNumber;        
  7148.     int type;            
  7149.     int size;            
  7150.     int numLinks;        
  7151.     unsigned int permissions;    
  7152.     int uid;            
  7153.     int gid;            
  7154.     int devServerID;        
  7155.     int devType;        
  7156.     int devUnit;        
  7157.     Time createTime;        
  7158.     Time accessTime;        
  7159.     Time descModifyTime;    
  7160.     Time dataModifyTime;    
  7161.     int  blocks;        
  7162.     int  blockSize;        
  7163.     int    version;        
  7164.     int userType;        
  7165.     int pad[4];            
  7166. } Fs_Attributes;
  7167.  
  7168.  
  7169.  
  7170.  
  7171.  
  7172.  
  7173.  
  7174.  
  7175.  
  7176.  
  7177.  
  7178.  
  7179.  
  7180.  
  7181.  
  7182.  
  7183.  
  7184.  
  7185.  
  7186.  
  7187.  
  7188.  
  7189.  
  7190.  
  7191.  
  7192.  
  7193.  
  7194.  
  7195.  
  7196.  
  7197.  
  7198.  
  7199.  
  7200.  
  7201.  
  7202.  
  7203.  
  7204.  
  7205.  
  7206.  
  7207.  
  7208.  
  7209.  
  7210.  
  7211.  
  7212.  
  7213.  
  7214.  
  7215.  
  7216.  
  7217.  
  7218.  
  7219.  
  7220.  
  7221.  
  7222.  
  7223.  
  7224.  
  7225.  
  7226.  
  7227.  
  7228.  
  7229.  
  7230.  
  7231.  
  7232.  
  7233.  
  7234.  
  7235.  
  7236.  
  7237.  
  7238.  
  7239.  
  7240.  
  7241.  
  7242.  
  7243.  
  7244.  
  7245.  
  7246.  
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.  
  7254.  
  7255.  
  7256.  
  7257.  
  7258.  
  7259.  
  7260.  
  7261.  
  7262.  
  7263.  
  7264.  
  7265.  
  7266. typedef struct Fs_FileID {
  7267.     int        type;        
  7268.  
  7269.  
  7270.  
  7271.     int        serverID;    
  7272.  
  7273.  
  7274.     int        major;        
  7275.     int        minor;        
  7276. } Fs_FileID;            
  7277.  
  7278.  
  7279.  
  7280.  
  7281.  
  7282.  
  7283.  
  7284. typedef struct Fs_UserIDs {
  7285.     int user;            
  7286.     int numGroupIDs;        
  7287.     int group[8];    
  7288. } Fs_UserIDs;            
  7289.  
  7290.  
  7291.  
  7292.  
  7293.  
  7294.  
  7295.  
  7296.  
  7297.  
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303.  
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.  
  7312.  
  7313.  
  7314.  
  7315.  
  7316.  
  7317.  
  7318.  
  7319.  
  7320.  
  7321.  
  7322.  
  7323.  
  7324.  
  7325.  
  7326.  
  7327.  
  7328.  
  7329.  
  7330.  
  7331.  
  7332.  
  7333.  
  7334.  
  7335.  
  7336.  
  7337.  
  7338.  
  7339.  
  7340.  
  7341.  
  7342.  
  7343.  
  7344.  
  7345.  
  7346.  
  7347.  
  7348.  
  7349.  
  7350.  
  7351. typedef struct Ioc_RepositionArgs {
  7352.     int base;    
  7353.     int offset;    
  7354. } Ioc_RepositionArgs;
  7355.  
  7356.  
  7357.  
  7358.  
  7359.  
  7360.  
  7361.  
  7362.  
  7363.  
  7364.  
  7365.  
  7366.  
  7367.  
  7368.  
  7369.  
  7370.  
  7371.  
  7372.  
  7373.  
  7374.  
  7375.  
  7376.  
  7377.  
  7378.  
  7379.  
  7380.  
  7381.  
  7382.  
  7383.  
  7384.  
  7385.  
  7386.  
  7387.  
  7388.  
  7389.  
  7390.  
  7391.  
  7392.  
  7393.  
  7394.  
  7395.  
  7396.  
  7397.  
  7398.  
  7399.  
  7400.  
  7401. typedef struct Ioc_LockArgs {
  7402.     int        flags;        
  7403.  
  7404.  
  7405.  
  7406.  
  7407.  
  7408.     
  7409.  
  7410.  
  7411.  
  7412.  
  7413.     int        hostID;        
  7414.     Proc_PID    pid;        
  7415.     int        token;        
  7416. } Ioc_LockArgs;
  7417.  
  7418.  
  7419.  
  7420.  
  7421.  
  7422.  
  7423.  
  7424.  
  7425.  
  7426. typedef struct Ioc_Owner {
  7427.     Proc_PID    id;        
  7428.     int        procOrFamily;    
  7429. } Ioc_Owner;
  7430.  
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.  
  7437. typedef struct Ioc_MapArgs {
  7438.     int        numBytes;
  7439.     Address    address;
  7440. } Ioc_MapArgs;
  7441.  
  7442.  
  7443.  
  7444.  
  7445. typedef struct Ioc_PrefixArgs {
  7446.     char    prefix[1024];  
  7447. } Ioc_PrefixArgs;
  7448.  
  7449.  
  7450.  
  7451.  
  7452.  
  7453.  
  7454.  
  7455.  
  7456. typedef struct Ioc_WriteBackArgs {
  7457.     int        firstByte;    
  7458.     int        lastByte;    
  7459.     Boolean    shouldBlock;    
  7460. } Ioc_WriteBackArgs;
  7461.  
  7462.  
  7463.  
  7464.  
  7465.  
  7466. typedef struct Ioc_MmapInfoArgs {
  7467.     int        isMapped;    
  7468.     int        clientID;    
  7469. } Ioc_MmapInfoArgs;
  7470.  
  7471.  
  7472.  
  7473.  
  7474.  
  7475.  
  7476.  
  7477.  
  7478.  
  7479.  
  7480.  
  7481.  
  7482.  
  7483.  
  7484.  
  7485.  
  7486.  
  7487.  
  7488.  
  7489.  
  7490.  
  7491.  
  7492.  
  7493.  
  7494.  
  7495.  
  7496.  
  7497.  
  7498.  
  7499.  
  7500.  
  7501.  
  7502.  
  7503.  
  7504.  
  7505.  
  7506.  
  7507.  
  7508.  
  7509.  
  7510.  
  7511.  
  7512.  
  7513.  
  7514.  
  7515.  
  7516.  
  7517.  
  7518.  
  7519.  
  7520.  
  7521.  
  7522.  
  7523.  
  7524.  
  7525.  
  7526.  
  7527.  
  7528.  
  7529.  
  7530.  
  7531.  
  7532.  
  7533.  
  7534.  
  7535.  
  7536. typedef struct Fs_TwoPaths {
  7537.     int        pathLen1;    
  7538.     int        pathLen2;    
  7539.     char     *path1;        
  7540.     char     *path2;        
  7541. } Fs_TwoPaths;
  7542.  
  7543.  
  7544.  
  7545.  
  7546. typedef struct {
  7547.     int    maxKbytes;        
  7548.  
  7549.     int    freeKbytes;        
  7550.  
  7551.  
  7552.  
  7553.     int    maxFileDesc;        
  7554.  
  7555.     int    freeFileDesc;        
  7556.     int blockSize;        
  7557.     int optSize;        
  7558. } Fs_DomainInfo;
  7559.  
  7560.  
  7561.  
  7562.  
  7563.  
  7564.  
  7565.  
  7566.  
  7567. typedef struct Fs_Prefix {
  7568.     int serverID;        
  7569.  
  7570.     int domain;            
  7571.     int fileNumber;        
  7572.     int version;        
  7573.     int flags;            
  7574.     char prefix[64];
  7575.     Fs_DomainInfo domainInfo;    
  7576. } Fs_Prefix;
  7577.  
  7578.  
  7579.  
  7580.  
  7581.  
  7582.  
  7583.  
  7584.  
  7585.  
  7586.  
  7587.  
  7588.  
  7589.  
  7590. typedef struct {
  7591.     int        bufSize;    
  7592.     Address    buffer;        
  7593.  
  7594.  
  7595. } Fs_IOVector;
  7596.  
  7597.  
  7598.  
  7599.  
  7600.  
  7601.  
  7602.  
  7603. typedef struct Fs_Device {
  7604.     int        serverID;    
  7605.  
  7606.     int        type;        
  7607.  
  7608.     int        unit;        
  7609.  
  7610.     ClientData    data;        
  7611.  
  7612.  
  7613. } Fs_Device;
  7614.  
  7615.  
  7616.  
  7617.  
  7618. typedef ClientData Fs_TimeoutHandler;
  7619.  
  7620. extern void            Fs_Dispatch();
  7621. extern void            Fs_EventHandlerCreate();
  7622. extern void             Fs_EventHandlerDestroy();
  7623. extern ClientData         Fs_EventHandlerData();
  7624. extern ClientData         Fs_EventHandlerChangeData();
  7625. extern char            *Fs_GetTempName();
  7626. extern int            Fs_GetTempFile();
  7627. extern int                  Fs_IOControl();
  7628. extern Boolean            Fs_IsATerm();
  7629. extern Fs_TimeoutHandler    Fs_TimeoutHandlerCreate();
  7630. extern void             Fs_TimeoutHandlerDestroy();
  7631.  
  7632. extern int                  Ioc_ClearBits();
  7633. extern int                  Ioc_GetFlags();
  7634. extern int                  Ioc_GetOwner();
  7635. extern int                  Ioc_Lock();
  7636. extern int                  Ioc_Map();
  7637. extern int                  Ioc_NumReadable();
  7638. extern int                  Ioc_SetBits();
  7639. extern int                  Ioc_Reposition();
  7640. extern int                  Ioc_SetFlags();
  7641. extern int                  Ioc_SetOwner();
  7642. extern int                  Ioc_Truncate();
  7643. extern int                  Ioc_Unlock();
  7644. extern int                  Ioc_WriteBack();
  7645.  
  7646.  
  7647. # 43 "lfsrebuild.c"
  7648.  
  7649. # 1 "/sprite/lib/include/kernel/fs.h"
  7650.  
  7651.  
  7652.  
  7653.  
  7654.  
  7655.  
  7656.  
  7657.  
  7658.  
  7659.  
  7660.  
  7661.  
  7662.  
  7663.  
  7664.  
  7665.  
  7666.  
  7667.  
  7668.  
  7669.  
  7670.  
  7671.  
  7672.  
  7673.  
  7674.  
  7675.  
  7676.  
  7677.  
  7678.  
  7679.  
  7680.  
  7681. # 39 "/sprite/lib/include/kernel/fs.h"
  7682.  
  7683.  
  7684. # 1 "/sprite/lib/include/kernel/sys.h"
  7685.  
  7686.  
  7687.  
  7688.  
  7689.  
  7690.  
  7691.  
  7692.  
  7693.  
  7694.  
  7695.  
  7696.  
  7697.  
  7698.  
  7699.  
  7700.  
  7701.  
  7702. # 23 "/sprite/lib/include/kernel/sys.h"
  7703.  
  7704.  
  7705. # 1 "/sprite/lib/include/sys.h"
  7706.  
  7707.  
  7708.  
  7709.  
  7710.  
  7711.  
  7712.  
  7713.  
  7714.  
  7715.  
  7716.  
  7717.  
  7718.  
  7719.  
  7720.  
  7721.  
  7722.  
  7723.  
  7724.  
  7725.  
  7726.  
  7727. # 24 "/sprite/lib/include/sys.h"
  7728.  
  7729.  
  7730. typedef enum {
  7731.     SYS_WARNING,
  7732.     SYS_FATAL
  7733. } Sys_PanicLevel;
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.  
  7740.  
  7741.  
  7742.  
  7743.  
  7744.  
  7745.  
  7746.  
  7747.  
  7748.  
  7749.  
  7750.  
  7751.  
  7752.  
  7753.  
  7754.  
  7755.  
  7756.  
  7757.  
  7758.  
  7759.  
  7760.  
  7761. typedef struct {
  7762.     int architecture;        
  7763.     int type;            
  7764.     int    processors;        
  7765. } Sys_MachineInfo;
  7766.  
  7767.  
  7768.  
  7769.  
  7770.  
  7771.  
  7772.  
  7773.  
  7774.  
  7775.  
  7776.  
  7777.  
  7778.  
  7779.  
  7780.  
  7781.  
  7782.  
  7783.  
  7784.  
  7785.  
  7786.  
  7787.  
  7788.  
  7789.  
  7790.  
  7791.  
  7792.  
  7793.  
  7794.  
  7795.  
  7796.  
  7797.  
  7798.  
  7799.  
  7800.  
  7801.  
  7802.  
  7803. extern ReturnStatus        Sys_GetMachineInfo();
  7804.  
  7805.  
  7806. # 25 "/sprite/lib/include/kernel/sys.h"
  7807.  
  7808. # 1 "/sprite/lib/include/sprite.h"
  7809.  
  7810.  
  7811.  
  7812.  
  7813.  
  7814.  
  7815.  
  7816.  
  7817.  
  7818.  
  7819.  
  7820.  
  7821.  
  7822.  
  7823.  
  7824.  
  7825.  
  7826.  
  7827.  
  7828.  
  7829.  
  7830.  
  7831.  
  7832.  
  7833.  
  7834.  
  7835.  
  7836.  
  7837.  
  7838.  
  7839.  
  7840.  
  7841.  
  7842.  
  7843.  
  7844.  
  7845.  
  7846.  
  7847.  
  7848.  
  7849. # 97 "/sprite/lib/include/sprite.h"
  7850.  
  7851. # 26 "/sprite/lib/include/kernel/sys.h"
  7852.  
  7853. # 1 "/sprite/lib/include/status.h"
  7854.  
  7855.  
  7856.  
  7857.  
  7858.  
  7859.  
  7860.  
  7861.  
  7862.  
  7863.  
  7864.  
  7865.  
  7866.  
  7867.  
  7868.  
  7869.  
  7870.  
  7871.  
  7872.  
  7873.  
  7874.  
  7875.  
  7876.  
  7877.  
  7878.  
  7879.  
  7880.  
  7881.  
  7882.  
  7883.  
  7884.  
  7885.  
  7886.  
  7887.  
  7888.  
  7889.  
  7890. # 39 "/sprite/lib/include/status.h"
  7891.  
  7892.  
  7893. extern char *Stat_GetMsg     ();
  7894. extern char *Stat_GetPrivateMsg();
  7895. extern void Stat_PrintMsg     ();
  7896.  
  7897.  
  7898.  
  7899.  
  7900.  
  7901.  
  7902.  
  7903.  
  7904.  
  7905.  
  7906.  
  7907.  
  7908.  
  7909.  
  7910. extern ReturnStatus    stat_LastError;
  7911. extern void           Stat_SetErrorHandler();
  7912. extern void           Stat_SetErrorData();
  7913. extern void        Stat_GetErrorHandler();
  7914. extern ReturnStatus    Stat_Error();
  7915.  
  7916.  
  7917.  
  7918.  
  7919.  
  7920.  
  7921.  
  7922. extern int        Compat_MapCode     ();
  7923. extern ReturnStatus    Compat_MapToSprite     ();
  7924.  
  7925.  
  7926.  
  7927.  
  7928.  
  7929.  
  7930.  
  7931.  
  7932.  
  7933.  
  7934.  
  7935.  
  7936.  
  7937.  
  7938.  
  7939.  
  7940.  
  7941.  
  7942.  
  7943.  
  7944.  
  7945.  
  7946.  
  7947.  
  7948.  
  7949.  
  7950.  
  7951.  
  7952.  
  7953.  
  7954.  
  7955.  
  7956.  
  7957.  
  7958.  
  7959.  
  7960.  
  7961.  
  7962.  
  7963.  
  7964.  
  7965.  
  7966.  
  7967.  
  7968.  
  7969.  
  7970.  
  7971.  
  7972.  
  7973.  
  7974.  
  7975.  
  7976.  
  7977.  
  7978.  
  7979.  
  7980.  
  7981.  
  7982.  
  7983.  
  7984.  
  7985.  
  7986.  
  7987.  
  7988.  
  7989.  
  7990.  
  7991.  
  7992.  
  7993.  
  7994.  
  7995.  
  7996.  
  7997.  
  7998.  
  7999.  
  8000.  
  8001.  
  8002.  
  8003.  
  8004.  
  8005.  
  8006.  
  8007.  
  8008.  
  8009.  
  8010.  
  8011.  
  8012.  
  8013.  
  8014.  
  8015.  
  8016.  
  8017.  
  8018.  
  8019.  
  8020.  
  8021.  
  8022.  
  8023.  
  8024.  
  8025.  
  8026.  
  8027.  
  8028.  
  8029.  
  8030.  
  8031.  
  8032.  
  8033.  
  8034.  
  8035.  
  8036.  
  8037.  
  8038.  
  8039.  
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.  
  8047.  
  8048.  
  8049.  
  8050.  
  8051.  
  8052.  
  8053.  
  8054.  
  8055.  
  8056.  
  8057.  
  8058.  
  8059.  
  8060.  
  8061.  
  8062.  
  8063.  
  8064.  
  8065.  
  8066.  
  8067.  
  8068.  
  8069.  
  8070.  
  8071.  
  8072. # 27 "/sprite/lib/include/kernel/sys.h"
  8073.  
  8074. # 1 "/sprite/lib/include/spriteTime.h"
  8075.  
  8076.  
  8077.  
  8078.  
  8079.  
  8080.  
  8081.  
  8082.  
  8083.  
  8084.  
  8085.  
  8086.  
  8087.  
  8088.  
  8089.  
  8090.  
  8091.  
  8092.  
  8093.  
  8094.  
  8095.  
  8096.  
  8097.  
  8098.  
  8099.  
  8100.  
  8101.  
  8102.  
  8103.  
  8104.  
  8105.  
  8106.  
  8107.  
  8108.  
  8109.  
  8110.  
  8111.  
  8112.  
  8113.  
  8114.  
  8115.  
  8116.  
  8117.  
  8118.  
  8119. # 145 "/sprite/lib/include/spriteTime.h"
  8120.  
  8121. # 28 "/sprite/lib/include/kernel/sys.h"
  8122.  
  8123.  
  8124.  
  8125.  
  8126.  
  8127.  
  8128.  
  8129.  
  8130.  
  8131.  
  8132.  
  8133.  
  8134.  
  8135.  
  8136.  
  8137.  
  8138.  
  8139.  
  8140. # 75 "/sprite/lib/include/kernel/sys.h"
  8141.  
  8142.  
  8143.  
  8144.  
  8145.  
  8146.  
  8147.  
  8148. extern ReturnStatus Sys_GetTimeOfDay();
  8149. extern ReturnStatus Sys_SetTimeOfDay();
  8150. extern ReturnStatus Sys_DoNothing();
  8151. extern ReturnStatus Sys_Shutdown();
  8152. extern ReturnStatus Sys_GetMachineInfo();
  8153. extern ReturnStatus Sys_GetMachineInfoNew();
  8154.  
  8155.  
  8156.  
  8157.  
  8158. # 41 "/sprite/lib/include/kernel/fs.h"
  8159.  
  8160. # 1 "/sprite/lib/include/kernel/syncTypes.h"
  8161.  
  8162.  
  8163.  
  8164.  
  8165.  
  8166.  
  8167.  
  8168.  
  8169.  
  8170.  
  8171.  
  8172.  
  8173.  
  8174.  
  8175.  
  8176.  
  8177.  
  8178.  
  8179.  
  8180.  
  8181.  
  8182.  
  8183.  
  8184.  
  8185.  
  8186.  
  8187.  
  8188.  
  8189.  
  8190.  
  8191.  
  8192.  
  8193.  
  8194.  
  8195.  
  8196.  
  8197.  
  8198.  
  8199.  
  8200.  
  8201.  
  8202.  
  8203.  
  8204.  
  8205.  
  8206.  
  8207.  
  8208.  
  8209.  
  8210.  
  8211. # 57 "/sprite/lib/include/kernel/syncTypes.h"
  8212.  
  8213.  
  8214. # 1 "/sprite/lib/include/sync.h"
  8215.  
  8216.  
  8217.  
  8218.  
  8219.  
  8220.  
  8221.  
  8222.  
  8223.  
  8224.  
  8225.  
  8226.  
  8227.  
  8228.  
  8229.  
  8230.  
  8231.  
  8232.  
  8233.  
  8234.  
  8235.  
  8236.  
  8237.  
  8238.  
  8239.  
  8240.  
  8241.  
  8242.  
  8243.  
  8244.  
  8245.  
  8246.  
  8247.  
  8248.  
  8249.  
  8250.  
  8251.  
  8252.  
  8253.  
  8254.  
  8255.  
  8256.  
  8257.  
  8258.  
  8259.  
  8260.  
  8261.  
  8262.  
  8263.  
  8264.  
  8265.  
  8266.  
  8267.  
  8268.  
  8269.  
  8270.  
  8271.  
  8272.  
  8273.  
  8274.  
  8275.  
  8276.  
  8277.  
  8278.  
  8279.  
  8280.  
  8281.  
  8282.  
  8283.  
  8284.  
  8285.  
  8286.  
  8287.  
  8288.  
  8289.  
  8290.  
  8291.  
  8292.  
  8293.  
  8294.  
  8295.  
  8296.  
  8297.  
  8298.  
  8299.  
  8300.  
  8301.  
  8302.  
  8303.  
  8304.  
  8305.  
  8306.  
  8307.  
  8308.  
  8309.  
  8310.  
  8311.  
  8312.  
  8313.  
  8314.  
  8315.  
  8316.  
  8317.  
  8318.  
  8319.  
  8320.  
  8321.  
  8322.  
  8323.  
  8324.  
  8325.  
  8326.  
  8327.  
  8328.  
  8329.  
  8330.  
  8331.  
  8332.  
  8333.  
  8334.  
  8335.  
  8336.  
  8337.  
  8338.  
  8339.  
  8340.  
  8341.  
  8342.  
  8343.  
  8344.  
  8345.  
  8346. # 210 "/sprite/lib/include/sync.h"
  8347.  
  8348. # 59 "/sprite/lib/include/kernel/syncTypes.h"
  8349.  
  8350. # 1 "/sprite/lib/include/kernel/procTypes.h"
  8351.  
  8352.  
  8353.  
  8354.  
  8355.  
  8356.  
  8357.  
  8358.  
  8359.  
  8360.  
  8361.  
  8362.  
  8363.  
  8364.  
  8365.  
  8366.  
  8367.  
  8368.  
  8369.  
  8370.  
  8371.  
  8372.  
  8373.  
  8374.  
  8375.  
  8376.  
  8377.  
  8378.  
  8379.  
  8380.  
  8381.  
  8382.  
  8383.  
  8384.  
  8385.  
  8386.  
  8387.  
  8388.  
  8389.  
  8390.  
  8391.  
  8392.  
  8393.  
  8394.  
  8395.  
  8396.  
  8397.  
  8398.  
  8399.  
  8400.  
  8401.  
  8402.  
  8403.  
  8404.  
  8405.  
  8406.  
  8407.  
  8408.  
  8409.  
  8410.  
  8411.  
  8412.  
  8413.  
  8414.  
  8415.  
  8416.  
  8417.  
  8418.  
  8419.  
  8420.  
  8421.  
  8422.  
  8423.  
  8424.  
  8425.  
  8426.  
  8427.  
  8428.  
  8429.  
  8430.  
  8431.  
  8432.  
  8433.  
  8434.  
  8435.  
  8436.  
  8437.  
  8438.  
  8439.  
  8440.  
  8441.  
  8442.  
  8443.  
  8444.  
  8445.  
  8446.  
  8447.  
  8448.  
  8449.  
  8450.  
  8451.  
  8452.  
  8453.  
  8454.  
  8455.  
  8456.  
  8457.  
  8458.  
  8459.  
  8460.  
  8461.  
  8462.  
  8463.  
  8464.  
  8465.  
  8466.  
  8467.  
  8468.  
  8469.  
  8470.  
  8471.  
  8472.  
  8473.  
  8474.  
  8475.  
  8476.  
  8477.  
  8478.  
  8479.  
  8480.  
  8481.  
  8482.  
  8483.  
  8484.  
  8485.  
  8486.  
  8487.  
  8488.  
  8489.  
  8490.  
  8491.  
  8492.  
  8493.  
  8494.  
  8495.  
  8496.  
  8497.  
  8498.  
  8499.  
  8500.  
  8501.  
  8502.  
  8503.  
  8504.  
  8505.  
  8506.  
  8507.  
  8508.  
  8509.  
  8510.  
  8511.  
  8512.  
  8513.  
  8514.  
  8515.  
  8516.  
  8517.  
  8518.  
  8519.  
  8520.  
  8521.  
  8522.  
  8523.  
  8524.  
  8525.  
  8526.  
  8527.  
  8528.  
  8529.  
  8530.  
  8531.  
  8532.  
  8533.  
  8534.  
  8535.  
  8536.  
  8537.  
  8538.  
  8539.  
  8540.  
  8541.  
  8542.  
  8543.  
  8544.  
  8545.  
  8546.  
  8547.  
  8548.  
  8549.  
  8550.  
  8551.  
  8552.  
  8553.  
  8554.  
  8555.  
  8556.  
  8557.  
  8558.  
  8559.  
  8560.  
  8561.  
  8562.  
  8563.  
  8564.  
  8565.  
  8566.  
  8567.  
  8568.  
  8569.  
  8570.  
  8571.  
  8572.  
  8573.  
  8574.  
  8575.  
  8576.  
  8577.  
  8578.  
  8579.  
  8580.  
  8581.  
  8582.  
  8583.  
  8584.  
  8585.  
  8586.  
  8587.  
  8588.  
  8589.  
  8590.  
  8591.  
  8592.  
  8593.  
  8594.  
  8595.  
  8596.  
  8597.  
  8598.  
  8599.  
  8600.  
  8601.  
  8602.  
  8603.  
  8604.  
  8605.  
  8606.  
  8607.  
  8608.  
  8609.  
  8610.  
  8611.  
  8612.  
  8613.  
  8614.  
  8615.  
  8616.  
  8617.  
  8618.  
  8619.  
  8620.  
  8621.  
  8622.  
  8623.  
  8624. # 542 "/sprite/lib/include/kernel/procTypes.h"
  8625.  
  8626. # 60 "/sprite/lib/include/kernel/syncTypes.h"
  8627.  
  8628. # 1 "/sprite/lib/include/kernel/syncLock.h"
  8629.  
  8630.  
  8631.  
  8632.  
  8633.  
  8634.  
  8635.  
  8636.  
  8637.  
  8638.  
  8639.  
  8640.  
  8641.  
  8642.  
  8643.  
  8644.  
  8645.  
  8646.  
  8647.  
  8648.  
  8649.  
  8650.  
  8651.  
  8652.  
  8653.  
  8654.  
  8655.  
  8656.  
  8657.  
  8658.  
  8659.  
  8660.  
  8661.  
  8662.  
  8663.  
  8664.  
  8665.  
  8666.  
  8667.  
  8668.  
  8669.  
  8670.  
  8671.  
  8672.  
  8673.  
  8674.  
  8675.  
  8676.  
  8677.  
  8678.  
  8679.  
  8680.  
  8681.  
  8682.  
  8683.  
  8684.  
  8685.  
  8686.  
  8687.  
  8688.  
  8689.  
  8690.  
  8691.  
  8692.  
  8693.  
  8694.  
  8695.  
  8696. # 171 "/sprite/lib/include/kernel/syncLock.h"
  8697.  
  8698.  
  8699. # 61 "/sprite/lib/include/kernel/syncTypes.h"
  8700.  
  8701. # 1 "/sprite/lib/include/kernel/machTypes.h"
  8702.  
  8703.  
  8704.  
  8705.  
  8706.  
  8707.  
  8708.  
  8709.  
  8710.  
  8711.  
  8712.  
  8713.  
  8714.  
  8715.  
  8716.  
  8717.  
  8718.  
  8719.  
  8720.  
  8721.  
  8722.  
  8723.  
  8724.  
  8725.  
  8726.  
  8727.  
  8728.  
  8729.  
  8730.  
  8731.  
  8732.  
  8733.  
  8734.  
  8735.  
  8736.  
  8737.  
  8738.  
  8739.  
  8740.  
  8741.  
  8742.  
  8743.  
  8744.  
  8745.  
  8746.  
  8747.  
  8748.  
  8749.  
  8750.  
  8751.  
  8752.  
  8753.  
  8754.  
  8755. # 140 "/sprite/lib/include/kernel/machTypes.h"
  8756.  
  8757. # 62 "/sprite/lib/include/kernel/syncTypes.h"
  8758.  
  8759. # 1 "/sprite/lib/include/proc.h"
  8760.  
  8761.  
  8762.  
  8763.  
  8764.  
  8765.  
  8766.  
  8767.  
  8768.  
  8769.  
  8770.  
  8771.  
  8772.  
  8773.  
  8774.  
  8775.  
  8776.  
  8777.  
  8778.  
  8779.  
  8780.  
  8781.  
  8782.  
  8783.  
  8784.  
  8785.  
  8786.  
  8787.  
  8788.  
  8789.  
  8790.  
  8791.  
  8792.  
  8793.  
  8794.  
  8795.  
  8796.  
  8797.  
  8798.  
  8799.  
  8800.  
  8801.  
  8802.  
  8803.  
  8804.  
  8805.  
  8806.  
  8807.  
  8808.  
  8809.  
  8810.  
  8811.  
  8812.  
  8813.  
  8814.  
  8815.  
  8816.  
  8817.  
  8818.  
  8819.  
  8820.  
  8821.  
  8822.  
  8823.  
  8824.  
  8825.  
  8826.  
  8827.  
  8828.  
  8829.  
  8830.  
  8831.  
  8832.  
  8833.  
  8834.  
  8835.  
  8836.  
  8837.  
  8838.  
  8839.  
  8840.  
  8841.  
  8842.  
  8843.  
  8844.  
  8845.  
  8846.  
  8847.  
  8848.  
  8849.  
  8850.  
  8851.  
  8852.  
  8853.  
  8854.  
  8855.  
  8856.  
  8857.  
  8858.  
  8859.  
  8860.  
  8861.  
  8862.  
  8863.  
  8864.  
  8865.  
  8866.  
  8867.  
  8868.  
  8869.  
  8870.  
  8871.  
  8872.  
  8873.  
  8874.  
  8875.  
  8876.  
  8877.  
  8878.  
  8879.  
  8880.  
  8881.  
  8882.  
  8883.  
  8884.  
  8885.  
  8886.  
  8887.  
  8888.  
  8889.  
  8890.  
  8891.  
  8892.  
  8893.  
  8894.  
  8895.  
  8896.  
  8897.  
  8898.  
  8899.  
  8900.  
  8901.  
  8902.  
  8903.  
  8904.  
  8905.  
  8906.  
  8907.  
  8908.  
  8909.  
  8910.  
  8911.  
  8912.  
  8913.  
  8914.  
  8915.  
  8916.  
  8917.  
  8918.  
  8919.  
  8920.  
  8921.  
  8922.  
  8923.  
  8924.  
  8925.  
  8926.  
  8927.  
  8928.  
  8929.  
  8930.  
  8931.  
  8932.  
  8933.  
  8934.  
  8935.  
  8936.  
  8937.  
  8938.  
  8939.  
  8940.  
  8941.  
  8942.  
  8943.  
  8944.  
  8945.  
  8946.  
  8947.  
  8948.  
  8949.  
  8950.  
  8951.  
  8952.  
  8953.  
  8954.  
  8955.  
  8956.  
  8957.  
  8958.  
  8959.  
  8960.  
  8961.  
  8962.  
  8963.  
  8964.  
  8965.  
  8966.  
  8967.  
  8968.  
  8969.  
  8970.  
  8971.  
  8972.  
  8973.  
  8974.  
  8975.  
  8976.  
  8977.  
  8978.  
  8979.  
  8980.  
  8981.  
  8982.  
  8983.  
  8984.  
  8985.  
  8986.  
  8987.  
  8988.  
  8989.  
  8990.  
  8991.  
  8992.  
  8993.  
  8994.  
  8995.  
  8996.  
  8997.  
  8998.  
  8999.  
  9000.  
  9001.  
  9002.  
  9003.  
  9004.  
  9005.  
  9006.  
  9007.  
  9008.  
  9009.  
  9010.  
  9011.  
  9012.  
  9013.  
  9014.  
  9015.  
  9016.  
  9017.  
  9018.  
  9019.  
  9020.  
  9021.  
  9022.  
  9023.  
  9024.  
  9025.  
  9026.  
  9027.  
  9028.  
  9029.  
  9030.  
  9031.  
  9032.  
  9033.  
  9034.  
  9035.  
  9036.  
  9037.  
  9038.  
  9039.  
  9040.  
  9041.  
  9042.  
  9043. # 610 "/sprite/lib/include/proc.h"
  9044.  
  9045. # 63 "/sprite/lib/include/kernel/syncTypes.h"
  9046.  
  9047.  
  9048.  
  9049.  
  9050.  
  9051.  
  9052. # 72 "/sprite/lib/include/kernel/syncTypes.h"
  9053.  
  9054.  
  9055.  
  9056.  
  9057.  
  9058. # 79 "/sprite/lib/include/kernel/syncTypes.h"
  9059.  
  9060.  
  9061.  
  9062.  
  9063.  
  9064.  
  9065.  
  9066.  
  9067.  
  9068.  
  9069.  
  9070.  
  9071.  
  9072.  
  9073.  
  9074.  
  9075.  
  9076.  
  9077.  
  9078. typedef struct Sync_Instrument {
  9079.     int numWakeups;        
  9080.     int numWakeupCalls;        
  9081.     int numSpuriousWakeups;    
  9082.     int numLocks;        
  9083.     int numUnlocks;        
  9084.     int spinCount[60+1]; 
  9085.     int sched_MutexMiss;    
  9086.  
  9087.  
  9088.     char pad[    32];
  9089.  
  9090. } Sync_Instrument;
  9091.  
  9092.  
  9093.  
  9094.  
  9095.  
  9096.  
  9097. typedef struct Sync_RegElement {
  9098.     List_Links         links;            
  9099.     int            hit;            
  9100.     int            miss;            
  9101.     int            type;            
  9102.     char        *name;            
  9103.     Sync_LockClass    class;            
  9104.     int            priorCount;        
  9105.     int            priorTypes[1]; 
  9106.     int            activeLockCount;    
  9107.     List_Links        activeLocks;        
  9108.     int            deadLockCount;        
  9109. } Sync_RegElement;
  9110.  
  9111.  
  9112.  
  9113.  
  9114. typedef struct semid_ds Sync_SysVSem;
  9115.  
  9116.  
  9117.  
  9118.  
  9119.  
  9120.  
  9121. typedef struct {
  9122.     List_Links    links;        
  9123.     int        hostID;        
  9124.     Proc_PID    pid;        
  9125.     int        waitToken;    
  9126. } Sync_RemoteWaiter;
  9127.  
  9128.  
  9129.  
  9130.  
  9131.  
  9132.  
  9133.  
  9134.  
  9135.  
  9136. # 42 "/sprite/lib/include/kernel/fs.h"
  9137.  
  9138. # 1 "/sprite/lib/include/kernel/procTypes.h"
  9139.  
  9140.  
  9141.  
  9142.  
  9143.  
  9144.  
  9145.  
  9146.  
  9147.  
  9148.  
  9149.  
  9150.  
  9151.  
  9152.  
  9153.  
  9154.  
  9155.  
  9156.  
  9157.  
  9158.  
  9159.  
  9160.  
  9161.  
  9162.  
  9163.  
  9164.  
  9165.  
  9166.  
  9167.  
  9168.  
  9169.  
  9170.  
  9171.  
  9172.  
  9173.  
  9174.  
  9175.  
  9176.  
  9177.  
  9178.  
  9179.  
  9180.  
  9181.  
  9182.  
  9183.  
  9184.  
  9185.  
  9186.  
  9187.  
  9188.  
  9189.  
  9190.  
  9191.  
  9192.  
  9193.  
  9194.  
  9195.  
  9196.  
  9197.  
  9198.  
  9199.  
  9200.  
  9201.  
  9202.  
  9203.  
  9204.  
  9205.  
  9206.  
  9207.  
  9208.  
  9209.  
  9210.  
  9211.  
  9212.  
  9213.  
  9214.  
  9215.  
  9216.  
  9217.  
  9218.  
  9219.  
  9220.  
  9221.  
  9222.  
  9223.  
  9224.  
  9225.  
  9226.  
  9227.  
  9228.  
  9229.  
  9230.  
  9231.  
  9232.  
  9233.  
  9234.  
  9235.  
  9236.  
  9237.  
  9238.  
  9239.  
  9240.  
  9241.  
  9242.  
  9243.  
  9244.  
  9245.  
  9246.  
  9247.  
  9248.  
  9249.  
  9250.  
  9251.  
  9252.  
  9253.  
  9254.  
  9255.  
  9256.  
  9257.  
  9258.  
  9259.  
  9260.  
  9261.  
  9262.  
  9263.  
  9264.  
  9265.  
  9266.  
  9267.  
  9268.  
  9269.  
  9270.  
  9271.  
  9272.  
  9273.  
  9274.  
  9275.  
  9276.  
  9277.  
  9278.  
  9279.  
  9280.  
  9281.  
  9282.  
  9283.  
  9284.  
  9285.  
  9286.  
  9287.  
  9288.  
  9289.  
  9290.  
  9291.  
  9292.  
  9293.  
  9294.  
  9295.  
  9296.  
  9297.  
  9298.  
  9299.  
  9300.  
  9301.  
  9302.  
  9303.  
  9304.  
  9305.  
  9306.  
  9307.  
  9308.  
  9309.  
  9310.  
  9311.  
  9312.  
  9313.  
  9314.  
  9315.  
  9316.  
  9317.  
  9318.  
  9319.  
  9320.  
  9321.  
  9322.  
  9323.  
  9324.  
  9325.  
  9326.  
  9327.  
  9328.  
  9329.  
  9330.  
  9331.  
  9332.  
  9333.  
  9334.  
  9335.  
  9336.  
  9337.  
  9338.  
  9339.  
  9340.  
  9341.  
  9342.  
  9343.  
  9344.  
  9345.  
  9346.  
  9347.  
  9348.  
  9349.  
  9350.  
  9351.  
  9352.  
  9353.  
  9354.  
  9355.  
  9356.  
  9357.  
  9358.  
  9359.  
  9360.  
  9361.  
  9362.  
  9363.  
  9364.  
  9365.  
  9366.  
  9367.  
  9368.  
  9369.  
  9370.  
  9371.  
  9372.  
  9373.  
  9374.  
  9375.  
  9376.  
  9377.  
  9378.  
  9379.  
  9380.  
  9381.  
  9382.  
  9383.  
  9384.  
  9385.  
  9386.  
  9387.  
  9388.  
  9389.  
  9390.  
  9391.  
  9392.  
  9393.  
  9394.  
  9395.  
  9396.  
  9397.  
  9398.  
  9399.  
  9400.  
  9401.  
  9402.  
  9403.  
  9404.  
  9405.  
  9406.  
  9407.  
  9408.  
  9409.  
  9410.  
  9411.  
  9412. # 542 "/sprite/lib/include/kernel/procTypes.h"
  9413.  
  9414. # 43 "/sprite/lib/include/kernel/fs.h"
  9415.  
  9416. # 1 "/sprite/lib/include/fs.h"
  9417.  
  9418.  
  9419.  
  9420.  
  9421.  
  9422.  
  9423.  
  9424.  
  9425.  
  9426.  
  9427.  
  9428.  
  9429.  
  9430.  
  9431.  
  9432.  
  9433.  
  9434.  
  9435.  
  9436.  
  9437.  
  9438.  
  9439.  
  9440.  
  9441.  
  9442.  
  9443.  
  9444.  
  9445.  
  9446.  
  9447.  
  9448.  
  9449.  
  9450.  
  9451.  
  9452.  
  9453.  
  9454.  
  9455.  
  9456.  
  9457.  
  9458.  
  9459.  
  9460.  
  9461.  
  9462.  
  9463.  
  9464.  
  9465.  
  9466.  
  9467.  
  9468.  
  9469.  
  9470.  
  9471.  
  9472.  
  9473.  
  9474.  
  9475.  
  9476.  
  9477.  
  9478.  
  9479.  
  9480.  
  9481.  
  9482.  
  9483.  
  9484.  
  9485.  
  9486.  
  9487.  
  9488.  
  9489.  
  9490.  
  9491.  
  9492.  
  9493.  
  9494.  
  9495.  
  9496.  
  9497.  
  9498.  
  9499.  
  9500.  
  9501.  
  9502.  
  9503.  
  9504.  
  9505.  
  9506.  
  9507.  
  9508.  
  9509.  
  9510.  
  9511.  
  9512.  
  9513.  
  9514.  
  9515.  
  9516.  
  9517.  
  9518.  
  9519.  
  9520.  
  9521.  
  9522.  
  9523.  
  9524.  
  9525.  
  9526.  
  9527.  
  9528.  
  9529.  
  9530.  
  9531.  
  9532.  
  9533.  
  9534.  
  9535.  
  9536.  
  9537.  
  9538.  
  9539.  
  9540.  
  9541.  
  9542.  
  9543.  
  9544.  
  9545.  
  9546.  
  9547.  
  9548.  
  9549.  
  9550.  
  9551.  
  9552.  
  9553.  
  9554.  
  9555.  
  9556.  
  9557.  
  9558.  
  9559.  
  9560.  
  9561.  
  9562.  
  9563.  
  9564.  
  9565.  
  9566.  
  9567.  
  9568.  
  9569.  
  9570.  
  9571.  
  9572.  
  9573.  
  9574.  
  9575.  
  9576.  
  9577.  
  9578.  
  9579.  
  9580.  
  9581.  
  9582.  
  9583.  
  9584.  
  9585.  
  9586.  
  9587.  
  9588.  
  9589.  
  9590.  
  9591.  
  9592.  
  9593.  
  9594.  
  9595.  
  9596.  
  9597.  
  9598.  
  9599.  
  9600.  
  9601.  
  9602.  
  9603.  
  9604.  
  9605.  
  9606.  
  9607.  
  9608.  
  9609.  
  9610.  
  9611.  
  9612.  
  9613.  
  9614.  
  9615.  
  9616.  
  9617.  
  9618.  
  9619.  
  9620.  
  9621.  
  9622.  
  9623.  
  9624.  
  9625.  
  9626.  
  9627.  
  9628.  
  9629.  
  9630.  
  9631.  
  9632.  
  9633.  
  9634.  
  9635.  
  9636.  
  9637.  
  9638.  
  9639.  
  9640.  
  9641.  
  9642.  
  9643.  
  9644.  
  9645.  
  9646.  
  9647.  
  9648.  
  9649.  
  9650.  
  9651.  
  9652.  
  9653.  
  9654.  
  9655.  
  9656.  
  9657.  
  9658.  
  9659.  
  9660.  
  9661.  
  9662.  
  9663.  
  9664.  
  9665.  
  9666.  
  9667.  
  9668.  
  9669.  
  9670.  
  9671.  
  9672.  
  9673.  
  9674.  
  9675.  
  9676.  
  9677.  
  9678.  
  9679.  
  9680.  
  9681.  
  9682.  
  9683.  
  9684.  
  9685.  
  9686.  
  9687.  
  9688.  
  9689.  
  9690.  
  9691.  
  9692.  
  9693.  
  9694.  
  9695.  
  9696. # 619 "/sprite/lib/include/fs.h"
  9697.  
  9698. # 44 "/sprite/lib/include/kernel/fs.h"
  9699.  
  9700. # 1 "/sprite/lib/include/fmt.h"
  9701.  
  9702.  
  9703.  
  9704.  
  9705.  
  9706.  
  9707.  
  9708.  
  9709.  
  9710.  
  9711.  
  9712.  
  9713.  
  9714.  
  9715.  
  9716.  
  9717.  
  9718.  
  9719.  
  9720.  
  9721.  
  9722.  
  9723.  
  9724.  
  9725.  
  9726.  
  9727. # 81 "/sprite/lib/include/fmt.h"
  9728.  
  9729.  
  9730. # 45 "/sprite/lib/include/kernel/fs.h"
  9731.  
  9732.  
  9733.  
  9734.  
  9735.  
  9736.  
  9737.  
  9738.  
  9739.  
  9740.  
  9741.  
  9742.  
  9743.  
  9744.  
  9745.  
  9746.  
  9747.  
  9748. typedef struct Fs_ProcessState {
  9749.     struct Fs_Stream    *cwdPtr;    
  9750.     unsigned int       filePermissions;
  9751.  
  9752.  
  9753.  
  9754.  
  9755.     int               numStreams;    
  9756.     struct Fs_Stream   **streamList;    
  9757.  
  9758.  
  9759.     char        *streamFlags;    
  9760.  
  9761.  
  9762.     int            numGroupIDs;    
  9763.     int            *groupIDs;    
  9764.  
  9765. } Fs_ProcessState;
  9766.  
  9767.  
  9768.  
  9769.  
  9770.  
  9771.  
  9772.  
  9773.  
  9774.  
  9775.  
  9776.  
  9777.  
  9778.  
  9779.  
  9780.  
  9781.  
  9782.  
  9783.  
  9784.  
  9785.  
  9786. typedef struct Fs_HandleHeader {
  9787.     Fs_FileID        fileID;        
  9788.     int            flags;        
  9789.     Sync_Condition    unlocked;    
  9790.     int            refCount;    
  9791.     char        *name;        
  9792.     List_Links        lruLinks;    
  9793.  
  9794.     Proc_ControlBlock    *lockProcPtr;    
  9795.  
  9796.  
  9797. } Fs_HandleHeader;
  9798.  
  9799.  
  9800.  
  9801. # 115 "/sprite/lib/include/kernel/fs.h"
  9802.  
  9803.  
  9804.  
  9805.  
  9806.  
  9807.  
  9808.  
  9809.  
  9810.  
  9811.  
  9812.  
  9813.  
  9814. typedef struct Fs_NameInfo {
  9815.     Fs_FileID        fileID;        
  9816.     Fs_FileID        rootID;        
  9817.  
  9818.  
  9819.     int            domainType;    
  9820.     struct Fsprefix    *prefixPtr;    
  9821.  
  9822.  
  9823. } Fs_NameInfo;
  9824.  
  9825.  
  9826.  
  9827.  
  9828.  
  9829.  
  9830.  
  9831.  
  9832.  
  9833.  
  9834.  
  9835.  
  9836.  
  9837.  
  9838.  
  9839.  
  9840.  
  9841.  
  9842.  
  9843.  
  9844.  
  9845.  
  9846.  
  9847.  
  9848.  
  9849. typedef struct Fs_Stream {
  9850.     Fs_HandleHeader    hdr;        
  9851.  
  9852.  
  9853.     int            offset;        
  9854.     int            flags;        
  9855.     Fs_HandleHeader    *ioHandlePtr;    
  9856.  
  9857.  
  9858.     Fs_NameInfo         *nameInfoPtr;    
  9859.     List_Links        clientList;    
  9860.  
  9861. } Fs_Stream;
  9862.  
  9863.  
  9864.  
  9865.  
  9866.  
  9867.  
  9868.  
  9869.  
  9870.  
  9871.  
  9872.  
  9873.  
  9874.  
  9875.  
  9876.  
  9877.  
  9878.  
  9879.  
  9880.  
  9881.  
  9882.  
  9883.  
  9884.  
  9885.  
  9886.  
  9887.  
  9888.  
  9889.  
  9890.  
  9891.  
  9892.  
  9893.  
  9894.  
  9895.  
  9896.  
  9897.  
  9898.  
  9899.  
  9900.  
  9901.  
  9902.  
  9903.  
  9904.  
  9905.  
  9906.  
  9907.  
  9908.  
  9909.  
  9910.  
  9911.  
  9912.  
  9913.  
  9914.  
  9915.  
  9916.  
  9917.  
  9918.  
  9919.  
  9920.  
  9921.  
  9922.  
  9923.  
  9924.  
  9925.  
  9926.  
  9927.  
  9928.  
  9929.  
  9930.  
  9931.  
  9932.  
  9933.  
  9934.  
  9935.  
  9936.  
  9937.  
  9938.  
  9939.  
  9940.  
  9941.  
  9942.  
  9943.  
  9944.  
  9945.  
  9946.  
  9947.  
  9948.  
  9949.  
  9950.  
  9951.  
  9952.  
  9953.  
  9954.  
  9955.  
  9956.  
  9957.  
  9958.  
  9959.  
  9960.  
  9961.  
  9962.  
  9963.  
  9964.  
  9965.  
  9966.  
  9967.  
  9968.  
  9969.  
  9970.  
  9971. typedef struct Fs_IOParam {
  9972.     Address    buffer;            
  9973.     int        length;            
  9974.     int        offset;            
  9975.     int        flags;            
  9976.     Proc_PID    procID;            
  9977.     Proc_PID    familyID;        
  9978.     int        uid;            
  9979.     int        reserved;        
  9980. } Fs_IOParam;
  9981.  
  9982.  
  9983.  
  9984.  
  9985.  
  9986.  
  9987.  
  9988.  
  9989.  
  9990.  
  9991.  
  9992.  
  9993.  
  9994.  
  9995.  
  9996. # 309 "/sprite/lib/include/kernel/fs.h"
  9997.  
  9998.  
  9999.  
  10000.  
  10001.  
  10002.  
  10003.  
  10004.  
  10005.  
  10006.  
  10007.  
  10008.  
  10009. typedef struct Fs_IOReply {
  10010.     int        length;            
  10011.     int        flags;            
  10012.     int        signal;            
  10013.     int        code;            
  10014. } Fs_IOReply;
  10015.  
  10016.  
  10017.  
  10018.  
  10019.  
  10020.  
  10021.  
  10022.  
  10023.  
  10024.  
  10025.  
  10026.  
  10027.  
  10028.  
  10029.  
  10030.  
  10031. typedef struct Fs_IOCParam {
  10032.     int        command;    
  10033.     Address    inBuffer;    
  10034.     int        inBufSize;    
  10035.     Address    outBuffer;    
  10036.     int        outBufSize;    
  10037.     Fmt_Format    format;        
  10038.  
  10039.     Proc_PID    procID;        
  10040.     Proc_PID    familyID;    
  10041.     int        uid;        
  10042.     int        flags;        
  10043.  
  10044.  
  10045. } Fs_IOCParam;
  10046.  
  10047.  
  10048.  
  10049.  
  10050.  
  10051.  
  10052.  
  10053.  
  10054.  
  10055.  
  10056.  
  10057. typedef enum {
  10058.     FS_CODE_PAGE,
  10059.     FS_HEAP_PAGE,
  10060.     FS_SWAP_PAGE,
  10061.     FS_SHARED_PAGE
  10062. } Fs_PageType;
  10063.  
  10064.  
  10065.  
  10066.  
  10067.  
  10068.  
  10069.  
  10070. typedef Address Fs_NotifyToken;
  10071.  
  10072.  
  10073.  
  10074.  
  10075.  
  10076.  
  10077.  
  10078.  
  10079.  
  10080.  
  10081.  
  10082.  
  10083.  
  10084.  
  10085.  
  10086.  
  10087.  
  10088.  
  10089.  
  10090.  
  10091.  
  10092.  
  10093.  
  10094.  
  10095. extern  Boolean fsutil_Initialized;    
  10096.  
  10097.  
  10098.  
  10099.  
  10100. extern int fsMaxRpcDataSize;
  10101. extern int fsMaxRpcParamSize;
  10102.  
  10103.  
  10104.  
  10105.  
  10106. extern void Fs_Init     ();
  10107. extern void Fs_InitData     ();
  10108. extern void Fs_InitNameSpace     ();
  10109. extern void Fs_Bin     ();
  10110. extern void Fs_ProcInit     ();
  10111. extern void Fs_InheritState 
  10112.     ();
  10113. extern void Fs_CloseState     ();
  10114.  
  10115.  
  10116.  
  10117.  
  10118.  
  10119. extern ReturnStatus Fs_AttachDiskStub 
  10120.     ();
  10121. extern ReturnStatus Fs_ChangeDirStub     ();
  10122. extern ReturnStatus Fs_RemoveStub     ();
  10123. extern ReturnStatus Fs_CommandStub 
  10124.     ();
  10125. extern ReturnStatus Fs_CreatePipeStub 
  10126.     ();
  10127. extern ReturnStatus Fs_GetAttributesIDStub 
  10128.     ();
  10129. extern ReturnStatus Fs_GetAttributesStub 
  10130.     ();
  10131. extern ReturnStatus Fs_GetNewIDStub     ();
  10132. extern ReturnStatus Fs_HardLinkStub     ();
  10133. extern ReturnStatus Fs_IOControlStub 
  10134.  
  10135.     ();
  10136. extern ReturnStatus Fs_MakeDeviceStub 
  10137.     ();
  10138. extern ReturnStatus Fs_MakeDirStub     ();
  10139. extern ReturnStatus Fs_OpenStub 
  10140.     ();
  10141. extern ReturnStatus Fs_ReadLinkStub 
  10142.     ();
  10143. extern ReturnStatus Fs_ReadStub 
  10144.     ();
  10145. extern ReturnStatus Fs_ReadVectorStub 
  10146.     ();
  10147. extern ReturnStatus Fs_RemoveDirStub     ();
  10148. extern ReturnStatus Fs_RemoveDirStub     ();
  10149. extern ReturnStatus Fs_RenameStub     ();
  10150. extern ReturnStatus Fs_SelectStub 
  10151.  
  10152.     ();
  10153. extern ReturnStatus Fs_SetAttributesIDStub 
  10154.     ();
  10155. extern ReturnStatus Fs_SetAttributesStub 
  10156.     ();
  10157. extern ReturnStatus Fs_SetAttrIDStub 
  10158.     ();
  10159. extern ReturnStatus Fs_SetAttrStub 
  10160.     ();
  10161. extern ReturnStatus Fs_SetDefPermStub     ();
  10162. extern ReturnStatus Fs_SymLinkStub 
  10163.     ();
  10164. extern ReturnStatus Fs_WriteStub 
  10165.     ();
  10166. extern ReturnStatus Fs_WriteVectorStub 
  10167.     ();
  10168. extern ReturnStatus Fs_FileWriteBackStub 
  10169.     ();
  10170.  
  10171.  
  10172.  
  10173.  
  10174. extern ReturnStatus Fs_UserClose     ();
  10175. extern ReturnStatus Fs_UserRead 
  10176.     ();
  10177. extern ReturnStatus Fs_UserReadVector 
  10178.     ();
  10179. extern ReturnStatus Fs_UserWrite 
  10180.     ();
  10181. extern ReturnStatus Fs_WriteVectorStub 
  10182.     ();
  10183. extern ReturnStatus Fs_UserWriteVector 
  10184.     ();
  10185.  
  10186.  
  10187.  
  10188.  
  10189. extern ReturnStatus Fs_ChangeDir     ();
  10190. extern ReturnStatus Fs_Close     ();
  10191. extern ReturnStatus Fs_Command 
  10192.     ();
  10193. extern ReturnStatus Fs_CheckAccess 
  10194.     ();
  10195. extern ReturnStatus Fs_GetAttributes 
  10196.     ();
  10197. extern ReturnStatus Fs_GetNewID     ();
  10198. extern ReturnStatus Fs_HardLink     ();
  10199. extern ReturnStatus Fs_IOControl 
  10200.     ();
  10201. extern ReturnStatus Fs_MakeDevice 
  10202.     ();
  10203. extern ReturnStatus Fs_MakeDir     ();
  10204. extern ReturnStatus Fs_Open 
  10205.     ();
  10206. extern ReturnStatus Fs_Read 
  10207.     ();
  10208. extern ReturnStatus Fs_Remove     ();
  10209. extern ReturnStatus Fs_RemoveDir     ();
  10210. extern ReturnStatus Fs_Rename     ();
  10211. extern ReturnStatus Fs_SetAttributes 
  10212.     ();
  10213. extern ReturnStatus Fs_SymLink 
  10214.     ();
  10215. extern ReturnStatus Fs_Trunc     ();
  10216. extern ReturnStatus Fs_TruncStream     ();
  10217. extern ReturnStatus Fs_Write 
  10218.     ();
  10219.  
  10220.  
  10221.  
  10222.  
  10223. extern void Fs_CheckSetID 
  10224.     ();
  10225. extern void Fs_CloseOnExec     ();
  10226.  
  10227.  
  10228.  
  10229.  
  10230.  
  10231.  
  10232. extern ReturnStatus Fs_InitiateMigration 
  10233.     ();
  10234. extern int Fs_GetEncapSize     ();
  10235. extern ReturnStatus Fs_EncapFileState 
  10236.  
  10237.     ();
  10238. extern ReturnStatus Fs_DeencapFileState 
  10239.     ();
  10240.  
  10241.  
  10242.  
  10243.  
  10244. extern ReturnStatus Fs_PageRead 
  10245.     ();
  10246. extern ReturnStatus Fs_PageWrite 
  10247.     ();
  10248. extern ReturnStatus Fs_PageCopy 
  10249.     ();
  10250. extern ReturnStatus Fs_FileBeingMapped 
  10251.     ();
  10252.  
  10253.  
  10254.  
  10255.  
  10256. extern ReturnStatus Fs_GetStreamID 
  10257.     ();
  10258. extern void Fs_ClearStreamID     ();
  10259. extern ReturnStatus Fs_GetStreamPtr 
  10260.     ();
  10261.  
  10262. extern ReturnStatus Fs_GetAttrStream 
  10263.     ();
  10264. extern ReturnStatus Fs_SetAttrStream 
  10265.     ();
  10266. extern void Fs_CheckSetID 
  10267.     ();
  10268.  
  10269. extern ClientData Fs_GetFileHandle     ();
  10270. extern struct Vm_Segment **Fs_GetSegPtr     ();
  10271.  
  10272.  
  10273. # 44 "lfsrebuild.c"
  10274.  
  10275. # 1 "/sprite/lib/include/kernel/dev.h"
  10276.  
  10277.  
  10278.  
  10279.  
  10280.  
  10281.  
  10282.  
  10283.  
  10284.  
  10285.  
  10286.  
  10287.  
  10288.  
  10289.  
  10290.  
  10291.  
  10292.  
  10293.  
  10294.  
  10295.  
  10296.  
  10297.  
  10298. # 1 "/sprite/lib/include/status.h"
  10299.  
  10300.  
  10301.  
  10302.  
  10303.  
  10304.  
  10305.  
  10306.  
  10307.  
  10308.  
  10309.  
  10310.  
  10311.  
  10312.  
  10313.  
  10314.  
  10315.  
  10316.  
  10317.  
  10318.  
  10319.  
  10320.  
  10321.  
  10322.  
  10323.  
  10324.  
  10325.  
  10326.  
  10327.  
  10328.  
  10329.  
  10330.  
  10331.  
  10332.  
  10333.  
  10334.  
  10335.  
  10336.  
  10337.  
  10338.  
  10339.  
  10340. # 219 "/sprite/lib/include/status.h"
  10341.  
  10342. # 23 "/sprite/lib/include/kernel/dev.h"
  10343. # 26 "/sprite/lib/include/kernel/dev.h"
  10344.  
  10345.  
  10346. # 1 "/sprite/lib/include/kernel/devSyslog.h"
  10347.  
  10348.  
  10349.  
  10350.  
  10351.  
  10352.  
  10353.  
  10354.  
  10355.  
  10356.  
  10357.  
  10358.  
  10359.  
  10360.  
  10361.  
  10362.  
  10363. # 1 "/sprite/lib/include/user/fs.h"
  10364.  
  10365.  
  10366.  
  10367.  
  10368.  
  10369.  
  10370.  
  10371.  
  10372.  
  10373.  
  10374.  
  10375.  
  10376.  
  10377.  
  10378.  
  10379.  
  10380.  
  10381.  
  10382.  
  10383.  
  10384.  
  10385.  
  10386.  
  10387.  
  10388.  
  10389.  
  10390.  
  10391.  
  10392.  
  10393.  
  10394.  
  10395.  
  10396.  
  10397.  
  10398.  
  10399.  
  10400.  
  10401.  
  10402.  
  10403.  
  10404.  
  10405.  
  10406.  
  10407.  
  10408.  
  10409.  
  10410.  
  10411.  
  10412.  
  10413.  
  10414.  
  10415.  
  10416.  
  10417.  
  10418.  
  10419.  
  10420.  
  10421.  
  10422.  
  10423.  
  10424.  
  10425.  
  10426.  
  10427.  
  10428.  
  10429.  
  10430.  
  10431.  
  10432.  
  10433.  
  10434.  
  10435.  
  10436.  
  10437.  
  10438.  
  10439.  
  10440.  
  10441.  
  10442.  
  10443.  
  10444.  
  10445.  
  10446.  
  10447.  
  10448.  
  10449.  
  10450.  
  10451.  
  10452.  
  10453.  
  10454.  
  10455.  
  10456.  
  10457.  
  10458.  
  10459.  
  10460.  
  10461.  
  10462.  
  10463.  
  10464.  
  10465.  
  10466.  
  10467.  
  10468.  
  10469.  
  10470.  
  10471.  
  10472.  
  10473.  
  10474.  
  10475.  
  10476.  
  10477.  
  10478.  
  10479.  
  10480.  
  10481.  
  10482.  
  10483.  
  10484.  
  10485.  
  10486.  
  10487.  
  10488.  
  10489.  
  10490.  
  10491.  
  10492.  
  10493.  
  10494.  
  10495.  
  10496.  
  10497.  
  10498.  
  10499.  
  10500.  
  10501.  
  10502.  
  10503.  
  10504.  
  10505.  
  10506.  
  10507.  
  10508.  
  10509.  
  10510.  
  10511.  
  10512.  
  10513.  
  10514.  
  10515.  
  10516.  
  10517.  
  10518.  
  10519.  
  10520.  
  10521.  
  10522.  
  10523.  
  10524.  
  10525.  
  10526.  
  10527.  
  10528.  
  10529.  
  10530.  
  10531.  
  10532.  
  10533.  
  10534.  
  10535.  
  10536.  
  10537.  
  10538.  
  10539.  
  10540.  
  10541.  
  10542.  
  10543.  
  10544.  
  10545.  
  10546.  
  10547.  
  10548.  
  10549.  
  10550.  
  10551.  
  10552.  
  10553.  
  10554.  
  10555.  
  10556.  
  10557.  
  10558.  
  10559.  
  10560.  
  10561.  
  10562.  
  10563.  
  10564.  
  10565.  
  10566.  
  10567.  
  10568.  
  10569.  
  10570.  
  10571.  
  10572.  
  10573.  
  10574.  
  10575.  
  10576.  
  10577.  
  10578.  
  10579.  
  10580.  
  10581.  
  10582.  
  10583.  
  10584.  
  10585.  
  10586.  
  10587.  
  10588.  
  10589.  
  10590.  
  10591.  
  10592.  
  10593.  
  10594.  
  10595.  
  10596.  
  10597.  
  10598.  
  10599.  
  10600.  
  10601.  
  10602.  
  10603.  
  10604.  
  10605.  
  10606.  
  10607.  
  10608.  
  10609.  
  10610.  
  10611.  
  10612.  
  10613.  
  10614.  
  10615.  
  10616.  
  10617.  
  10618.  
  10619.  
  10620.  
  10621.  
  10622.  
  10623.  
  10624.  
  10625.  
  10626.  
  10627.  
  10628.  
  10629.  
  10630.  
  10631.  
  10632.  
  10633.  
  10634.  
  10635.  
  10636.  
  10637.  
  10638.  
  10639.  
  10640.  
  10641.  
  10642.  
  10643. # 619 "/sprite/lib/include/user/fs.h"
  10644.  
  10645. # 17 "/sprite/lib/include/kernel/devSyslog.h"
  10646.  
  10647. # 1 "/sprite/lib/include/fs.h"
  10648.  
  10649.  
  10650.  
  10651.  
  10652.  
  10653.  
  10654.  
  10655.  
  10656.  
  10657.  
  10658.  
  10659.  
  10660.  
  10661.  
  10662.  
  10663.  
  10664.  
  10665.  
  10666.  
  10667.  
  10668.  
  10669.  
  10670.  
  10671.  
  10672.  
  10673.  
  10674.  
  10675.  
  10676.  
  10677.  
  10678.  
  10679.  
  10680.  
  10681.  
  10682.  
  10683.  
  10684.  
  10685.  
  10686.  
  10687.  
  10688.  
  10689.  
  10690.  
  10691.  
  10692.  
  10693.  
  10694.  
  10695.  
  10696.  
  10697.  
  10698.  
  10699.  
  10700.  
  10701.  
  10702.  
  10703.  
  10704.  
  10705.  
  10706.  
  10707.  
  10708.  
  10709.  
  10710.  
  10711.  
  10712.  
  10713.  
  10714.  
  10715.  
  10716.  
  10717.  
  10718.  
  10719.  
  10720.  
  10721.  
  10722.  
  10723.  
  10724.  
  10725.  
  10726.  
  10727.  
  10728.  
  10729.  
  10730.  
  10731.  
  10732.  
  10733.  
  10734.  
  10735.  
  10736.  
  10737.  
  10738.  
  10739.  
  10740.  
  10741.  
  10742.  
  10743.  
  10744.  
  10745.  
  10746.  
  10747.  
  10748.  
  10749.  
  10750.  
  10751.  
  10752.  
  10753.  
  10754.  
  10755.  
  10756.  
  10757.  
  10758.  
  10759.  
  10760.  
  10761.  
  10762.  
  10763.  
  10764.  
  10765.  
  10766.  
  10767.  
  10768.  
  10769.  
  10770.  
  10771.  
  10772.  
  10773.  
  10774.  
  10775.  
  10776.  
  10777.  
  10778.  
  10779.  
  10780.  
  10781.  
  10782.  
  10783.  
  10784.  
  10785.  
  10786.  
  10787.  
  10788.  
  10789.  
  10790.  
  10791.  
  10792.  
  10793.  
  10794.  
  10795.  
  10796.  
  10797.  
  10798.  
  10799.  
  10800.  
  10801.  
  10802.  
  10803.  
  10804.  
  10805.  
  10806.  
  10807.  
  10808.  
  10809.  
  10810.  
  10811.  
  10812.  
  10813.  
  10814.  
  10815.  
  10816.  
  10817.  
  10818.  
  10819.  
  10820.  
  10821.  
  10822.  
  10823.  
  10824.  
  10825.  
  10826.  
  10827.  
  10828.  
  10829.  
  10830.  
  10831.  
  10832.  
  10833.  
  10834.  
  10835.  
  10836.  
  10837.  
  10838.  
  10839.  
  10840.  
  10841.  
  10842.  
  10843.  
  10844.  
  10845.  
  10846.  
  10847.  
  10848.  
  10849.  
  10850.  
  10851.  
  10852.  
  10853.  
  10854.  
  10855.  
  10856.  
  10857.  
  10858.  
  10859.  
  10860.  
  10861.  
  10862.  
  10863.  
  10864.  
  10865.  
  10866.  
  10867.  
  10868.  
  10869.  
  10870.  
  10871.  
  10872.  
  10873.  
  10874.  
  10875.  
  10876.  
  10877.  
  10878.  
  10879.  
  10880.  
  10881.  
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890.  
  10891.  
  10892.  
  10893.  
  10894.  
  10895.  
  10896.  
  10897.  
  10898.  
  10899.  
  10900.  
  10901.  
  10902.  
  10903.  
  10904.  
  10905.  
  10906.  
  10907.  
  10908.  
  10909.  
  10910.  
  10911.  
  10912.  
  10913.  
  10914.  
  10915.  
  10916.  
  10917.  
  10918.  
  10919.  
  10920.  
  10921.  
  10922.  
  10923.  
  10924.  
  10925.  
  10926.  
  10927. # 619 "/sprite/lib/include/fs.h"
  10928.  
  10929. # 18 "/sprite/lib/include/kernel/devSyslog.h"
  10930.  
  10931.  
  10932.  
  10933.  
  10934.  
  10935. extern ReturnStatus Dev_SyslogOpen 
  10936.     ();
  10937. extern ReturnStatus Dev_SyslogReopen 
  10938.     ();
  10939. extern ReturnStatus Dev_SyslogRead 
  10940.     ();
  10941. extern ReturnStatus Dev_SyslogWrite 
  10942.     ();
  10943. extern void Dev_SyslogPutChar     ();
  10944. extern ReturnStatus Dev_SyslogClose 
  10945.     ();
  10946. extern ReturnStatus Dev_SyslogIOControl 
  10947.     ();
  10948. extern ReturnStatus Dev_SyslogSelect 
  10949.     ();
  10950. extern void Dev_SyslogDebug     ();
  10951. extern void Dev_SyslogReturnBuffer 
  10952.     ();
  10953. extern void Dev_SyslogDisable     ();
  10954.  
  10955.  
  10956. # 28 "/sprite/lib/include/kernel/dev.h"
  10957.  
  10958. # 1 "/sprite/lib/include/sysStats.h"
  10959.  
  10960.  
  10961.  
  10962.  
  10963.  
  10964.  
  10965.  
  10966.  
  10967.  
  10968.  
  10969.  
  10970.  
  10971.  
  10972.  
  10973.  
  10974.  
  10975.  
  10976.  
  10977.  
  10978.  
  10979.  
  10980.  
  10981.  
  10982.  
  10983.  
  10984.  
  10985.  
  10986.  
  10987.  
  10988.  
  10989.  
  10990.  
  10991.  
  10992.  
  10993.  
  10994.  
  10995.  
  10996.  
  10997.  
  10998.  
  10999.  
  11000.  
  11001.  
  11002.  
  11003.  
  11004.  
  11005.  
  11006.  
  11007.  
  11008.  
  11009.  
  11010.  
  11011.  
  11012.  
  11013.  
  11014.  
  11015.  
  11016.  
  11017.  
  11018.  
  11019.  
  11020.  
  11021.  
  11022.  
  11023.  
  11024.  
  11025.  
  11026.  
  11027.  
  11028.  
  11029.  
  11030.  
  11031.  
  11032.  
  11033.  
  11034.  
  11035.  
  11036.  
  11037.  
  11038.  
  11039.  
  11040.  
  11041.  
  11042.  
  11043.  
  11044.  
  11045.  
  11046.  
  11047.  
  11048.  
  11049.  
  11050.  
  11051.  
  11052.  
  11053.  
  11054.  
  11055.  
  11056.  
  11057.  
  11058.  
  11059.  
  11060.  
  11061.  
  11062.  
  11063.  
  11064.  
  11065.  
  11066.  
  11067.  
  11068.  
  11069.  
  11070.  
  11071.  
  11072.  
  11073.  
  11074.  
  11075.  
  11076.  
  11077.  
  11078.  
  11079.  
  11080.  
  11081.  
  11082.  
  11083.  
  11084.  
  11085.  
  11086.  
  11087.  
  11088.  
  11089.  
  11090.  
  11091.  
  11092.  
  11093.  
  11094.  
  11095.  
  11096.  
  11097.  
  11098.  
  11099.  
  11100.  
  11101.  
  11102.  
  11103.  
  11104.  
  11105.  
  11106.  
  11107.  
  11108.  
  11109.  
  11110.  
  11111.  
  11112.  
  11113.  
  11114.  
  11115.  
  11116.  
  11117.  
  11118.  
  11119.  
  11120.  
  11121.  
  11122.  
  11123.  
  11124.  
  11125.  
  11126.  
  11127.  
  11128.  
  11129.  
  11130.  
  11131.  
  11132.  
  11133.  
  11134.  
  11135.  
  11136.  
  11137.  
  11138.  
  11139.  
  11140.  
  11141.  
  11142.  
  11143.  
  11144.  
  11145.  
  11146.  
  11147.  
  11148.  
  11149.  
  11150.  
  11151.  
  11152.  
  11153.  
  11154.  
  11155.  
  11156.  
  11157.  
  11158.  
  11159.  
  11160.  
  11161.  
  11162.  
  11163.  
  11164.  
  11165.  
  11166.  
  11167.  
  11168.  
  11169.  
  11170.  
  11171.  
  11172.  
  11173.  
  11174.  
  11175.  
  11176.  
  11177.  
  11178.  
  11179.  
  11180.  
  11181.  
  11182.  
  11183.  
  11184.  
  11185.  
  11186.  
  11187.  
  11188.  
  11189.  
  11190.  
  11191. typedef struct Sys_TracelogRecord {
  11192.     int        recordLen;    
  11193.     int        time[2];    
  11194.     ClientData    data;        
  11195. } Sys_TracelogRecord;
  11196.  
  11197.  
  11198.  
  11199.  
  11200.  
  11201.  
  11202.  
  11203.  
  11204.  
  11205.  
  11206.  
  11207.  
  11208.  
  11209.  
  11210.  
  11211.  
  11212.  
  11213.  
  11214.  
  11215. typedef struct Sys_TracelogHeader {
  11216.     int        numBytes;    
  11217.                 
  11218.     int        numRecs;    
  11219.     int        machineID;    
  11220.     char    kernel[32];    
  11221.     char    machineType[8]; 
  11222.     int        bootTime[2];    
  11223.     int        lostRecords;    
  11224.     int        traceDir[4];    
  11225. } Sys_TracelogHeader;
  11226.  
  11227.  
  11228.  
  11229.  
  11230. typedef struct Sys_TracelogHeaderKern {
  11231.     int        numBytes;    
  11232.                 
  11233.     int        numRecs;    
  11234.     int        machineID;    
  11235.     char    kernel[32];    
  11236.     char    machineType[8]; 
  11237.     int        bootTime[2];    
  11238.     int        lostRecords;    
  11239. } Sys_TracelogHeaderKern;
  11240.  
  11241.  
  11242.  
  11243.  
  11244.  
  11245.  
  11246.  
  11247.  
  11248.  
  11249.  
  11250.  
  11251.  
  11252.  
  11253.  
  11254. typedef struct Sys_DiskStats {
  11255.     char    name[100];    
  11256.     int        controllerID;            
  11257.     int        numSamples;            
  11258.  
  11259.     int        idleCount;            
  11260.  
  11261.     int        diskReads;            
  11262.  
  11263.     int        diskWrites;            
  11264.  
  11265. } Sys_DiskStats;
  11266.  
  11267. extern ReturnStatus        Sys_Stats();
  11268.  
  11269.  
  11270. # 29 "/sprite/lib/include/kernel/dev.h"
  11271.  
  11272. # 32 "/sprite/lib/include/kernel/dev.h"
  11273.  
  11274.  
  11275.  
  11276.  
  11277.  
  11278.  
  11279.  
  11280. typedef struct Dev_DiskAddr {
  11281.     int cylinder;
  11282.     int head;
  11283.     int sector;
  11284. } Dev_DiskAddr;
  11285.  
  11286.  
  11287.  
  11288.  
  11289.  
  11290. extern Time    dev_LastConsoleInput;
  11291.  
  11292. extern void Dev_ConsoleReset     ();
  11293. extern void Dev_Init     ();
  11294. extern void Dev_Config     ();
  11295.  
  11296. extern void Dev_GatherDiskStats     ();
  11297. extern int Dev_GetDiskStats     ();
  11298. extern void Dev_RegisterConsoleCmd 
  11299.     ();
  11300. extern void Dev_InvokeConsoleCmd     ();
  11301. extern int Dev_KbdQueueAttachProc 
  11302.     ();
  11303.  
  11304.  
  11305. # 45 "lfsrebuild.c"
  11306.  
  11307. # 1 "/sprite/lib/include/kernel/fsdm.h"
  11308.  
  11309.  
  11310.  
  11311.  
  11312.  
  11313.  
  11314.  
  11315.  
  11316.  
  11317.  
  11318.  
  11319.  
  11320.  
  11321.  
  11322.  
  11323.  
  11324.  
  11325.  
  11326.  
  11327.  
  11328.  
  11329. # 27 "/sprite/lib/include/kernel/fsdm.h"
  11330.  
  11331.  
  11332. # 1 "/sprite/lib/include/kernel/dev.h"
  11333.  
  11334.  
  11335.  
  11336.  
  11337.  
  11338.  
  11339.  
  11340.  
  11341.  
  11342.  
  11343.  
  11344.  
  11345.  
  11346.  
  11347.  
  11348.  
  11349.  
  11350.  
  11351.  
  11352.  
  11353.  
  11354.  
  11355.  
  11356.  
  11357. # 63 "/sprite/lib/include/kernel/dev.h"
  11358.  
  11359. # 29 "/sprite/lib/include/kernel/fsdm.h"
  11360.  
  11361.  
  11362.  
  11363.  
  11364.  
  11365.  
  11366.  
  11367.  
  11368.  
  11369.  
  11370.  
  11371.  
  11372.  
  11373. typedef struct Fsdm_DiskPartition {
  11374.     int firstCylinder;    
  11375.     int numCylinders;    
  11376.  
  11377. } Fsdm_DiskPartition;
  11378.  
  11379.  
  11380.  
  11381.  
  11382.  
  11383.  
  11384.  
  11385.  
  11386.  
  11387.  
  11388.  
  11389.  
  11390.  
  11391.  
  11392.  
  11393.  
  11394.  
  11395. typedef struct Fsdm_DiskHeader {
  11396.     char asciiLabel[128];    
  11397.  
  11398.     
  11399.  
  11400.  
  11401.  
  11402.  
  11403.     char pad[512 - 128 -
  11404.          (12 + 8 * 2) * sizeof(int)];
  11405.     unsigned int magic;        
  11406.     int numCylinders;        
  11407.     int numAltCylinders;    
  11408.     int numHeads;        
  11409.     int numSectors;        
  11410.     int bootSector;        
  11411.  
  11412.     int numBootSectors;        
  11413.  
  11414.     int summarySector;        
  11415.     int domainSector;        
  11416.     int numDomainSectors;    
  11417.  
  11418.     int partition;        
  11419.  
  11420.  
  11421.     Fsdm_DiskPartition map[8];    
  11422.     int checkSum;        
  11423.  
  11424.  
  11425. } Fsdm_DiskHeader;
  11426.  
  11427.  
  11428.  
  11429.  
  11430.  
  11431.  
  11432.  
  11433.  
  11434.  
  11435.  
  11436.  
  11437.  
  11438.  
  11439.  
  11440.  
  11441.  
  11442.  
  11443.  
  11444.  
  11445. typedef struct Fsdm_FileDescriptor {
  11446.     unsigned short magic;
  11447.     short flags;    
  11448.     short fileType;    
  11449.  
  11450.     short permissions;    
  11451.  
  11452.     int uid;        
  11453.     int gid;        
  11454.     int lastByte;    
  11455.     int lastByteXtra;    
  11456.     int firstByte;    
  11457.     int userType;    
  11458.     int numLinks;    
  11459.     int devServerID;    
  11460.     short devType;    
  11461.  
  11462.     unsigned short devUnit;    
  11463.  
  11464.     
  11465.  
  11466.  
  11467.  
  11468.     int createTime;    
  11469.     int accessTime;    
  11470.  
  11471.     int descModifyTime;    
  11472.     int dataModifyTime;    
  11473.  
  11474.     
  11475.  
  11476.  
  11477.  
  11478.  
  11479.  
  11480.  
  11481.  
  11482.  
  11483.  
  11484.  
  11485.  
  11486.  
  11487.  
  11488.  
  11489.  
  11490.  
  11491.  
  11492.  
  11493.  
  11494.  
  11495.     int direct[10];
  11496.     int indirect[3];
  11497.     int numKbytes;    
  11498.  
  11499.  
  11500.     int version;    
  11501.  
  11502. } Fsdm_FileDescriptor;
  11503.  
  11504.  
  11505.  
  11506.  
  11507.  
  11508.  
  11509.  
  11510.  
  11511.  
  11512.  
  11513.  
  11514.  
  11515.  
  11516.  
  11517.  
  11518.  
  11519.  
  11520.  
  11521.  
  11522.  
  11523.  
  11524.  
  11525.  
  11526.  
  11527.  
  11528.  
  11529.  
  11530.  
  11531.  
  11532.  
  11533.  
  11534.  
  11535.  
  11536.  
  11537.  
  11538.  
  11539.  
  11540.  
  11541.  
  11542.  
  11543.  
  11544.  
  11545.  
  11546.  
  11547.  
  11548.  
  11549.  
  11550.  
  11551.  
  11552.  
  11553.  
  11554.  
  11555.  
  11556.  
  11557.  
  11558.  
  11559.  
  11560.  
  11561.  
  11562.  
  11563.  
  11564.  
  11565.  
  11566.  
  11567.  
  11568.  
  11569.  
  11570.  
  11571.  
  11572.  
  11573.  
  11574.  
  11575.  
  11576.  
  11577.  
  11578.  
  11579.  
  11580.  
  11581.  
  11582.  
  11583.  
  11584.  
  11585.  
  11586.  
  11587.  
  11588.  
  11589.  
  11590.  
  11591.  
  11592.  
  11593.  
  11594.  
  11595.  
  11596.  
  11597.  
  11598.  
  11599.  
  11600.  
  11601.  
  11602.  
  11603.  
  11604.  
  11605.  
  11606.  
  11607.  
  11608.  
  11609.  
  11610.  
  11611.  
  11612.  
  11613.  
  11614.  
  11615.  
  11616.  
  11617.  
  11618.  
  11619.  
  11620.  
  11621.  
  11622.  
  11623.  
  11624.  
  11625.  
  11626.  
  11627.  
  11628.  
  11629.  
  11630.  
  11631.  
  11632.  
  11633.  
  11634.  
  11635. # 479 "/sprite/lib/include/kernel/fsdm.h"
  11636.  
  11637.  
  11638.  
  11639. # 46 "lfsrebuild.c"
  11640.  
  11641. # 1 "/sprite/lib/include/kernel/fslcl.h"
  11642.  
  11643.  
  11644.  
  11645.  
  11646.  
  11647.  
  11648.  
  11649.  
  11650.  
  11651.  
  11652.  
  11653.  
  11654.  
  11655.  
  11656.  
  11657.  
  11658.  
  11659.  
  11660.  
  11661.  
  11662. # 26 "/sprite/lib/include/kernel/fslcl.h"
  11663.  
  11664.  
  11665. # 1 "/sprite/lib/include/fs.h"
  11666.  
  11667.  
  11668.  
  11669.  
  11670.  
  11671.  
  11672.  
  11673.  
  11674.  
  11675.  
  11676.  
  11677.  
  11678.  
  11679.  
  11680.  
  11681.  
  11682.  
  11683.  
  11684.  
  11685.  
  11686.  
  11687.  
  11688.  
  11689.  
  11690.  
  11691.  
  11692.  
  11693.  
  11694.  
  11695.  
  11696.  
  11697.  
  11698.  
  11699.  
  11700.  
  11701.  
  11702.  
  11703.  
  11704.  
  11705.  
  11706.  
  11707.  
  11708.  
  11709.  
  11710.  
  11711.  
  11712.  
  11713.  
  11714.  
  11715.  
  11716.  
  11717.  
  11718.  
  11719.  
  11720.  
  11721.  
  11722.  
  11723.  
  11724.  
  11725.  
  11726.  
  11727.  
  11728.  
  11729.  
  11730.  
  11731.  
  11732.  
  11733.  
  11734.  
  11735.  
  11736.  
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.  
  11743.  
  11744.  
  11745.  
  11746.  
  11747.  
  11748.  
  11749.  
  11750.  
  11751.  
  11752.  
  11753.  
  11754.  
  11755.  
  11756.  
  11757.  
  11758.  
  11759.  
  11760.  
  11761.  
  11762.  
  11763.  
  11764.  
  11765.  
  11766.  
  11767.  
  11768.  
  11769.  
  11770.  
  11771.  
  11772.  
  11773.  
  11774.  
  11775.  
  11776.  
  11777.  
  11778.  
  11779.  
  11780.  
  11781.  
  11782.  
  11783.  
  11784.  
  11785.  
  11786.  
  11787.  
  11788.  
  11789.  
  11790.  
  11791.  
  11792.  
  11793.  
  11794.  
  11795.  
  11796.  
  11797.  
  11798.  
  11799.  
  11800.  
  11801.  
  11802.  
  11803.  
  11804.  
  11805.  
  11806.  
  11807.  
  11808.  
  11809.  
  11810.  
  11811.  
  11812.  
  11813.  
  11814.  
  11815.  
  11816.  
  11817.  
  11818.  
  11819.  
  11820.  
  11821.  
  11822.  
  11823.  
  11824.  
  11825.  
  11826.  
  11827.  
  11828.  
  11829.  
  11830.  
  11831.  
  11832.  
  11833.  
  11834.  
  11835.  
  11836.  
  11837.  
  11838.  
  11839.  
  11840.  
  11841.  
  11842.  
  11843.  
  11844.  
  11845.  
  11846.  
  11847.  
  11848.  
  11849.  
  11850.  
  11851.  
  11852.  
  11853.  
  11854.  
  11855.  
  11856.  
  11857.  
  11858.  
  11859.  
  11860.  
  11861.  
  11862.  
  11863.  
  11864.  
  11865.  
  11866.  
  11867.  
  11868.  
  11869.  
  11870.  
  11871.  
  11872.  
  11873.  
  11874.  
  11875.  
  11876.  
  11877.  
  11878.  
  11879.  
  11880.  
  11881.  
  11882.  
  11883.  
  11884.  
  11885.  
  11886.  
  11887.  
  11888.  
  11889.  
  11890.  
  11891.  
  11892.  
  11893.  
  11894.  
  11895.  
  11896.  
  11897.  
  11898.  
  11899.  
  11900.  
  11901.  
  11902.  
  11903.  
  11904.  
  11905.  
  11906.  
  11907.  
  11908.  
  11909.  
  11910.  
  11911.  
  11912.  
  11913.  
  11914.  
  11915.  
  11916.  
  11917.  
  11918.  
  11919.  
  11920.  
  11921.  
  11922.  
  11923.  
  11924.  
  11925.  
  11926.  
  11927.  
  11928.  
  11929.  
  11930.  
  11931.  
  11932.  
  11933.  
  11934.  
  11935.  
  11936.  
  11937.  
  11938.  
  11939.  
  11940.  
  11941.  
  11942.  
  11943.  
  11944.  
  11945. # 619 "/sprite/lib/include/fs.h"
  11946.  
  11947. # 28 "/sprite/lib/include/kernel/fslcl.h"
  11948.  
  11949.  
  11950.  
  11951.  
  11952.  
  11953. typedef struct Fslcl_DirEntry {
  11954.     int fileNumber;        
  11955.     short recordLength;        
  11956.     short nameLength;        
  11957.     char fileName[255+1];    
  11958. } Fslcl_DirEntry;
  11959.  
  11960.  
  11961.  
  11962.  
  11963.  
  11964.  
  11965.  
  11966.  
  11967.  
  11968.  
  11969.  
  11970.  
  11971.  
  11972.  
  11973.  
  11974.  
  11975.  
  11976.  
  11977.  
  11978. # 58 "/sprite/lib/include/kernel/fslcl.h"
  11979.  
  11980.  
  11981.  
  11982.  
  11983. # 69 "/sprite/lib/include/kernel/fslcl.h"
  11984.  
  11985.  
  11986.  
  11987. # 47 "lfsrebuild.c"
  11988.  
  11989. # 1 "/sprite/lib/include/kernel/devDiskLabel.h"
  11990.  
  11991.  
  11992.  
  11993.  
  11994.  
  11995.  
  11996.  
  11997.  
  11998.  
  11999.  
  12000.  
  12001.  
  12002.  
  12003.  
  12004.  
  12005.  
  12006.  
  12007.  
  12008.  
  12009.  
  12010.  
  12011.  
  12012.  
  12013.  
  12014.  
  12015.  
  12016.  
  12017.  
  12018.  
  12019.  
  12020. typedef struct Sun_DiskMap {
  12021.     int cylinder;
  12022.     int numBlocks;
  12023. } Sun_DiskMap;
  12024.  
  12025.  
  12026.  
  12027.  
  12028.  
  12029.  
  12030.  
  12031.  
  12032. typedef struct Sun_DiskLabel {
  12033.     char    asciiLabel[128];        
  12034.  
  12035.     char    pad[512-(128+8*8+11*2)];    
  12036.  
  12037.  
  12038.     unsigned short  gap1;        
  12039.     unsigned short  gap2;        
  12040.     unsigned short  interleave;        
  12041.     unsigned short  numCylinders;    
  12042.     unsigned short  numAltCylinders;    
  12043.     unsigned short  numHeads;        
  12044.     unsigned short  numSectors;        
  12045.     unsigned short  bhead;        
  12046.  
  12047.     unsigned short  partitionID;    
  12048.     Sun_DiskMap map[ 8]; 
  12049.  
  12050.     unsigned short  magic;        
  12051.     unsigned short  checkSum;        
  12052. } Sun_DiskLabel;
  12053.  
  12054.  
  12055.  
  12056.  
  12057.  
  12058.  
  12059.  
  12060.  
  12061.  
  12062.  
  12063.  
  12064.  
  12065.  
  12066.  
  12067.  
  12068.  
  12069.  
  12070.  
  12071.  
  12072.  
  12073.  
  12074.  
  12075.  
  12076.  
  12077.  
  12078.  
  12079.  
  12080.  
  12081.  
  12082.  
  12083.  
  12084.  
  12085.  
  12086. typedef struct Dec_DiskMap {
  12087.     int numBytes;    
  12088.     int offsetBytes;    
  12089. } Dec_DiskMap;
  12090.  
  12091. typedef struct Dec_BootMap {
  12092.     int numBlocks;    
  12093.     int startBlock;    
  12094. } Dec_BootMap;
  12095.  
  12096.  
  12097.  
  12098.  
  12099. typedef struct Dec_DiskLabel {
  12100.  
  12101.     int        magic;            
  12102.     int        isPartitioned;        
  12103.     Dec_DiskMap map[ 8]; 
  12104.     
  12105.  
  12106.  
  12107.  
  12108.     int        numCylinders;
  12109.     int        numAltCylinders;
  12110.     int        numHeads;
  12111.     int        numSectors;
  12112.     int        bootSector;
  12113.     int        numBootSectors;
  12114.     int        summarySector;
  12115.     int        domainSector;
  12116.     int        numDomainSectors;
  12117.     int        spriteMagic;        
  12118.     char    asciiLabel[128];        
  12119.     int        version;
  12120.     char    pad[512-(13*4+ 8*8+128)];
  12121. } Dec_DiskLabel;
  12122.  
  12123.  
  12124.  
  12125.  
  12126.  
  12127.  
  12128.  
  12129.  
  12130. typedef struct Dec_DiskBoot {
  12131.     char    pad[8];
  12132.     int        magic;            
  12133.     int        mode;            
  12134.     int        loadAddr;        
  12135.     int        execAddr;        
  12136.     Dec_BootMap    map[61];        
  12137. } Dec_DiskBoot;
  12138.  
  12139.  
  12140.  
  12141.  
  12142.  
  12143.  
  12144.  
  12145.  
  12146.  
  12147.  
  12148.  
  12149.  
  12150.  
  12151.  
  12152.  
  12153.  
  12154.  
  12155.  
  12156.  
  12157.  
  12158.  
  12159.  
  12160.  
  12161.  
  12162.  
  12163.  
  12164.  
  12165.  
  12166.  
  12167.  
  12168.  
  12169.  
  12170.  
  12171.  
  12172.  
  12173.  
  12174.  
  12175.  
  12176.  
  12177.  
  12178.  
  12179.  
  12180. typedef struct DevDiskMap {
  12181.     int firstCylinder;        
  12182.     int numCylinders;        
  12183. } DevDiskMap;
  12184.  
  12185.  
  12186.  
  12187.  
  12188.  
  12189.  
  12190.  
  12191.  
  12192.  
  12193. # 48 "lfsrebuild.c"
  12194.  
  12195.  
  12196. # 1 "/sprite/lib/include/kernel/lfsDesc.h"
  12197.  
  12198.  
  12199.  
  12200.  
  12201.  
  12202.  
  12203.  
  12204.  
  12205.  
  12206.  
  12207.  
  12208.  
  12209.  
  12210.  
  12211.  
  12212.  
  12213.  
  12214.  
  12215.  
  12216. # 22 "/sprite/lib/include/kernel/lfsDesc.h"
  12217.  
  12218.  
  12219. # 1 "/sprite/lib/include/kernel/fsdm.h"
  12220.  
  12221.  
  12222.  
  12223.  
  12224.  
  12225.  
  12226.  
  12227.  
  12228.  
  12229.  
  12230.  
  12231.  
  12232.  
  12233.  
  12234.  
  12235.  
  12236.  
  12237.  
  12238.  
  12239.  
  12240.  
  12241.  
  12242.  
  12243.  
  12244.  
  12245.  
  12246.  
  12247.  
  12248.  
  12249.  
  12250.  
  12251.  
  12252.  
  12253.  
  12254.  
  12255.  
  12256.  
  12257.  
  12258.  
  12259.  
  12260.  
  12261.  
  12262.  
  12263.  
  12264.  
  12265.  
  12266.  
  12267.  
  12268.  
  12269.  
  12270.  
  12271.  
  12272.  
  12273.  
  12274.  
  12275.  
  12276.  
  12277.  
  12278.  
  12279.  
  12280.  
  12281.  
  12282.  
  12283.  
  12284.  
  12285.  
  12286.  
  12287.  
  12288.  
  12289.  
  12290.  
  12291.  
  12292.  
  12293.  
  12294.  
  12295.  
  12296.  
  12297.  
  12298.  
  12299.  
  12300.  
  12301.  
  12302.  
  12303.  
  12304.  
  12305.  
  12306.  
  12307.  
  12308.  
  12309.  
  12310.  
  12311.  
  12312.  
  12313.  
  12314.  
  12315.  
  12316.  
  12317.  
  12318.  
  12319.  
  12320.  
  12321.  
  12322.  
  12323.  
  12324.  
  12325.  
  12326.  
  12327.  
  12328.  
  12329.  
  12330.  
  12331.  
  12332.  
  12333.  
  12334.  
  12335.  
  12336.  
  12337.  
  12338.  
  12339.  
  12340.  
  12341.  
  12342.  
  12343.  
  12344.  
  12345.  
  12346.  
  12347.  
  12348.  
  12349.  
  12350.  
  12351.  
  12352.  
  12353.  
  12354.  
  12355.  
  12356.  
  12357.  
  12358.  
  12359.  
  12360.  
  12361.  
  12362.  
  12363.  
  12364.  
  12365.  
  12366.  
  12367.  
  12368.  
  12369.  
  12370.  
  12371.  
  12372.  
  12373.  
  12374.  
  12375.  
  12376.  
  12377.  
  12378.  
  12379.  
  12380.  
  12381.  
  12382.  
  12383.  
  12384.  
  12385.  
  12386.  
  12387.  
  12388. # 481 "/sprite/lib/include/kernel/fsdm.h"
  12389.  
  12390. # 24 "/sprite/lib/include/kernel/lfsDesc.h"
  12391.  
  12392.  
  12393.  
  12394.  
  12395.  
  12396.  
  12397.  
  12398. typedef int LfsDiskAddr;
  12399.  
  12400.  
  12401.  
  12402.  
  12403.  
  12404.  
  12405.  
  12406. # 39 "/sprite/lib/include/kernel/lfsDesc.h"
  12407.  
  12408.  
  12409.  
  12410. # 42 "/sprite/lib/include/kernel/lfsDesc.h"
  12411.  
  12412.  
  12413. # 63 "/sprite/lib/include/kernel/lfsDesc.h"
  12414.  
  12415.  
  12416.  
  12417.  
  12418. typedef struct LfsFileDescriptor {
  12419.     Fsdm_FileDescriptor      common;
  12420.     int      fileNumber;    
  12421.     LfsDiskAddr      prevDiskAddr; 
  12422.  
  12423. } LfsFileDescriptor;
  12424.  
  12425.  
  12426.  
  12427.  
  12428.  
  12429. # 50 "lfsrebuild.c"
  12430.  
  12431. # 1 "/sprite/lib/include/kernel/lfsDescMap.h"
  12432.  
  12433.  
  12434.  
  12435.  
  12436.  
  12437.  
  12438.  
  12439.  
  12440.  
  12441.  
  12442.  
  12443.  
  12444.  
  12445.  
  12446.  
  12447.  
  12448.  
  12449.  
  12450.  
  12451.  
  12452.  
  12453.  
  12454.  
  12455. # 26 "/sprite/lib/include/kernel/lfsDescMap.h"
  12456.  
  12457.  
  12458. # 1 "/sprite/lib/include/kernel/lfsStableMem.h"
  12459.  
  12460.  
  12461.  
  12462.  
  12463.  
  12464.  
  12465.  
  12466.  
  12467.  
  12468.  
  12469.  
  12470.  
  12471.  
  12472.  
  12473.  
  12474.  
  12475.  
  12476.  
  12477.  
  12478.  
  12479.  
  12480.  
  12481.  
  12482.  
  12483.  
  12484.  
  12485.  
  12486.  
  12487. typedef struct LfsStableMemCheckPoint {
  12488.     int    numBlocks;    
  12489.  
  12490. } LfsStableMemCheckPoint;
  12491.  
  12492.  
  12493.  
  12494.  
  12495.  
  12496. typedef struct LfsStableMemParams {
  12497.     int    memType;    
  12498.     int blockSize;    
  12499.  
  12500.     int entrySize;    
  12501.     int    maxNumEntries;    
  12502.     int    entriesPerBlock; 
  12503.     int maxNumBlocks;    
  12504.  
  12505. } LfsStableMemParams;
  12506.  
  12507.  
  12508.  
  12509.  
  12510.  
  12511. typedef struct LfsStableMemBlockHdr {
  12512.     int    magic;        
  12513.     int    memType;    
  12514.     int    blockNum;    
  12515.     int    reserved;    
  12516. } LfsStableMemBlockHdr;
  12517.  
  12518.  
  12519.  
  12520.  
  12521.  
  12522. # 28 "/sprite/lib/include/kernel/lfsDescMap.h"
  12523.  
  12524.  
  12525.  
  12526.  
  12527.  
  12528.  
  12529.  
  12530.  
  12531.  
  12532. typedef struct LfsDescMapParams {
  12533.     unsigned int version;      
  12534.  
  12535.     int     maxDesc;    
  12536.  
  12537.     char     padding[64 - sizeof(LfsStableMemParams)-8];    
  12538.                 
  12539.  
  12540.     LfsStableMemParams     stableMem; 
  12541.  
  12542. } LfsDescMapParams;
  12543.  
  12544.  
  12545.  
  12546.  
  12547.  
  12548.  
  12549.  
  12550.  
  12551.  
  12552.  
  12553.  
  12554.  
  12555.  
  12556.  
  12557.  
  12558.  
  12559. typedef struct LfsDescMapCheckPoint {
  12560.     int numAllocDesc;    
  12561.  
  12562. } LfsDescMapCheckPoint;
  12563.  
  12564.  
  12565.  
  12566.  
  12567.  
  12568.  
  12569. typedef struct LfsDescMapEntry {
  12570.     LfsDiskAddr  blockAddress;        
  12571.  
  12572.     unsigned short truncVersion;    
  12573.  
  12574.  
  12575.  
  12576.     unsigned short  flags;          
  12577.     int  accessTime;              
  12578.  
  12579. } LfsDescMapEntry;
  12580.  
  12581.  
  12582.  
  12583.  
  12584.  
  12585.  
  12586.  
  12587.  
  12588.  
  12589.  
  12590.  
  12591.  
  12592.  
  12593.  
  12594.  
  12595.  
  12596.  
  12597.  
  12598. # 51 "lfsrebuild.c"
  12599.  
  12600. # 1 "/sprite/lib/include/kernel/lfsFileLayout.h"
  12601.  
  12602.  
  12603.  
  12604.  
  12605.  
  12606.  
  12607.  
  12608.  
  12609.  
  12610.  
  12611.  
  12612.  
  12613.  
  12614.  
  12615.  
  12616.  
  12617.  
  12618.  
  12619.  
  12620.  
  12621.  
  12622.  
  12623.  
  12624.  
  12625.  
  12626.  
  12627.  
  12628. typedef struct LfsFileLayoutSummary {
  12629.     unsigned short    blockType;     
  12630.     unsigned short    numBlocks;     
  12631.  
  12632.     int    fileNumber;                 
  12633.     unsigned short     truncVersion;  
  12634.  
  12635.     unsigned short      numDataBlocks; 
  12636.  
  12637.     
  12638.  
  12639.  
  12640.  
  12641. } LfsFileLayoutSummary;
  12642.  
  12643.  
  12644.  
  12645.  
  12646.  
  12647. typedef struct LfsFileLayoutLog {
  12648.     unsigned short    blockType;     
  12649.     unsigned short    numBlocks;     
  12650.  
  12651.     unsigned short    numDataBlocks;     
  12652.                       
  12653.  
  12654.     unsigned short     reserved;
  12655. } LfsFileLayoutLog;
  12656.  
  12657.  
  12658.  
  12659.  
  12660. typedef struct LfsFileLayoutDesc {
  12661.     unsigned short    blockType;     
  12662.     unsigned short    numBlocks;    
  12663.  
  12664. } LfsFileLayoutDesc;
  12665.  
  12666.  
  12667.  
  12668.  
  12669.  
  12670.  
  12671.  
  12672.  
  12673.  
  12674.  
  12675.  
  12676.  
  12677. typedef struct LfsFileLayoutParams {
  12678.     int     descPerBlock;    
  12679.  
  12680.     char pad[32 - 4];
  12681.  
  12682. } LfsFileLayoutParams;
  12683.  
  12684.  
  12685.  
  12686.  
  12687. # 52 "lfsrebuild.c"
  12688.  
  12689. # 1 "/sprite/lib/include/kernel/lfsDirOpLog.h"
  12690.  
  12691.  
  12692.  
  12693.  
  12694.  
  12695.  
  12696.  
  12697.  
  12698.  
  12699.  
  12700.  
  12701.  
  12702.  
  12703.  
  12704.  
  12705.  
  12706.  
  12707.  
  12708.  
  12709.  
  12710.  
  12711.  
  12712.  
  12713.  
  12714. typedef struct LfsDirOpLogBlockHdr {
  12715.     int        magic;        
  12716.     int        size;        
  12717.     int        nextLogBlock;    
  12718.  
  12719.     int        reserved;    
  12720. } LfsDirOpLogBlockHdr;
  12721.  
  12722. typedef struct LfsDirOpLogEntryHdr {
  12723.     int        logSeqNum;    
  12724.     int        opFlags;    
  12725.     int        dirFileNumber;    
  12726.     int        dirOffset;    
  12727.  
  12728.     int        linkCount;    
  12729. } LfsDirOpLogEntryHdr;
  12730.  
  12731. typedef struct LfsDirOpLogEntry {
  12732.     LfsDirOpLogEntryHdr    hdr;      
  12733.     Fslcl_DirEntry      dirEntry; 
  12734. } LfsDirOpLogEntry;
  12735.  
  12736.  
  12737. # 48 "/sprite/lib/include/kernel/lfsDirOpLog.h"
  12738.  
  12739.  
  12740.  
  12741.  
  12742.  
  12743.  
  12744.  
  12745.  
  12746. # 53 "lfsrebuild.c"
  12747.  
  12748. # 1 "/sprite/lib/include/kernel/lfsSegLayout.h"
  12749.  
  12750.  
  12751.  
  12752.  
  12753.  
  12754.  
  12755.  
  12756.  
  12757.  
  12758.  
  12759.  
  12760.  
  12761.  
  12762.  
  12763.  
  12764.  
  12765.  
  12766.  
  12767.  
  12768.  
  12769.  
  12770.  
  12771.  
  12772.  
  12773.  
  12774.  
  12775.  
  12776.  
  12777.  
  12778.  
  12779. typedef struct LfsSegSummary {
  12780.     unsigned int  magic;    
  12781.     unsigned int  timestamp;    
  12782.     unsigned int  prevSeg;      
  12783.     unsigned int  nextSeg;      
  12784.     int  size;            
  12785.  
  12786.     int nextSummaryBlock;    
  12787.  
  12788.  
  12789. } LfsSegSummary;
  12790.  
  12791.  
  12792.  
  12793. typedef struct LfsSegSummaryHdr {
  12794.     unsigned short moduleType;       
  12795.     unsigned short lengthInBytes;  
  12796.     int   numDataBlocks;       
  12797.  
  12798. } LfsSegSummaryHdr;
  12799.  
  12800.  
  12801.  
  12802.  
  12803.  
  12804.  
  12805.  
  12806.  
  12807.  
  12808.  
  12809.  
  12810. # 54 "lfsrebuild.c"
  12811.  
  12812. # 1 "/sprite/lib/include/kernel/lfsStableMem.h"
  12813.  
  12814.  
  12815.  
  12816.  
  12817.  
  12818.  
  12819.  
  12820.  
  12821.  
  12822.  
  12823.  
  12824.  
  12825.  
  12826.  
  12827.  
  12828.  
  12829.  
  12830.  
  12831.  
  12832.  
  12833.  
  12834.  
  12835.  
  12836.  
  12837.  
  12838.  
  12839.  
  12840.  
  12841. # 62 "/sprite/lib/include/kernel/lfsStableMem.h"
  12842.  
  12843.  
  12844. # 55 "lfsrebuild.c"
  12845.  
  12846. # 1 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  12847.  
  12848.  
  12849.  
  12850.  
  12851.  
  12852.  
  12853.  
  12854.  
  12855.  
  12856.  
  12857.  
  12858.  
  12859.  
  12860.  
  12861.  
  12862.  
  12863.  
  12864.  
  12865.  
  12866.  
  12867.  
  12868.  
  12869.  
  12870.  
  12871.  
  12872.  
  12873.  
  12874. # 32 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  12875.  
  12876.  
  12877. # 1 "/sprite/lib/include/kernel/lfsDescMap.h"
  12878.  
  12879.  
  12880.  
  12881.  
  12882.  
  12883.  
  12884.  
  12885.  
  12886.  
  12887.  
  12888.  
  12889.  
  12890.  
  12891.  
  12892.  
  12893.  
  12894.  
  12895.  
  12896.  
  12897.  
  12898.  
  12899.  
  12900.  
  12901.  
  12902.  
  12903.  
  12904.  
  12905.  
  12906.  
  12907.  
  12908.  
  12909.  
  12910.  
  12911.  
  12912.  
  12913.  
  12914.  
  12915.  
  12916.  
  12917.  
  12918.  
  12919.  
  12920.  
  12921.  
  12922.  
  12923.  
  12924.  
  12925.  
  12926.  
  12927.  
  12928.  
  12929.  
  12930.  
  12931.  
  12932.  
  12933.  
  12934. # 102 "/sprite/lib/include/kernel/lfsDescMap.h"
  12935.  
  12936. # 34 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  12937.  
  12938. # 1 "/sprite/lib/include/kernel/lfsUsageArray.h"
  12939.  
  12940.  
  12941.  
  12942.  
  12943.  
  12944.  
  12945.  
  12946.  
  12947.  
  12948.  
  12949.  
  12950.  
  12951.  
  12952.  
  12953.  
  12954.  
  12955.  
  12956.  
  12957.  
  12958.  
  12959.  
  12960.  
  12961.  
  12962.  
  12963. # 27 "/sprite/lib/include/kernel/lfsUsageArray.h"
  12964.  
  12965.  
  12966. # 1 "/sprite/lib/include/kernel/lfsStableMem.h"
  12967.  
  12968.  
  12969.  
  12970.  
  12971.  
  12972.  
  12973.  
  12974.  
  12975.  
  12976.  
  12977.  
  12978.  
  12979.  
  12980.  
  12981.  
  12982.  
  12983.  
  12984.  
  12985.  
  12986.  
  12987.  
  12988.  
  12989.  
  12990.  
  12991.  
  12992.  
  12993.  
  12994.  
  12995. # 62 "/sprite/lib/include/kernel/lfsStableMem.h"
  12996.  
  12997.  
  12998. # 29 "/sprite/lib/include/kernel/lfsUsageArray.h"
  12999.  
  13000.  
  13001.  
  13002.  
  13003.  
  13004.  
  13005.  
  13006.  
  13007. typedef struct LfsSegUsageParams {
  13008.     int segmentSize;         
  13009.  
  13010.  
  13011.     int numberSegments;      
  13012.     int   minNumClean;    
  13013.  
  13014.     int   minFreeBlocks;  
  13015.  
  13016.     int      wasteBlocks;      
  13017.  
  13018.     int      numSegsToClean;  
  13019.     char  padding[64 - sizeof(LfsStableMemParams)-6*4];
  13020.     LfsStableMemParams     stableMem; 
  13021. } LfsSegUsageParams;
  13022.  
  13023.  
  13024.  
  13025.  
  13026.  
  13027.  
  13028.  
  13029. typedef struct LfsSegUsageCheckPoint {
  13030.     int    freeBlocks;     
  13031.     int numClean;    
  13032.     int numDirty;    
  13033.     int dirtyActiveBytes; 
  13034.  
  13035.     int    currentSegment;    
  13036.     int    currentBlockOffset; 
  13037.  
  13038.     int curSegActiveBytes; 
  13039.     int    previousSegment;   
  13040.     int cleanSegList;    
  13041. } LfsSegUsageCheckPoint;
  13042.  
  13043.  
  13044.  
  13045.  
  13046.  
  13047.  
  13048. typedef struct LfsSegUsageEntry {
  13049.     int  activeBytes;             
  13050.  
  13051.  
  13052.  
  13053.  
  13054.     int     timeOfLastWrite;        
  13055.  
  13056.     int  flags;                 
  13057. } LfsSegUsageEntry;
  13058.  
  13059.  
  13060.  
  13061.  
  13062.  
  13063.  
  13064.  
  13065.  
  13066.  
  13067.  
  13068.  
  13069.  
  13070.  
  13071.  
  13072.  
  13073.  
  13074.  
  13075. # 35 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  13076.  
  13077. # 1 "/sprite/lib/include/kernel/lfsFileLayout.h"
  13078.  
  13079.  
  13080.  
  13081.  
  13082.  
  13083.  
  13084.  
  13085.  
  13086.  
  13087.  
  13088.  
  13089.  
  13090.  
  13091.  
  13092.  
  13093.  
  13094.  
  13095.  
  13096.  
  13097.  
  13098.  
  13099.  
  13100.  
  13101.  
  13102.  
  13103.  
  13104.  
  13105.  
  13106.  
  13107.  
  13108.  
  13109.  
  13110.  
  13111.  
  13112.  
  13113.  
  13114.  
  13115.  
  13116.  
  13117. # 85 "/sprite/lib/include/kernel/lfsFileLayout.h"
  13118.  
  13119.  
  13120. # 36 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  13121.  
  13122.  
  13123.  
  13124.  
  13125.  
  13126.  
  13127. typedef struct LfsSuperBlockHdr {
  13128.     unsigned int magic;        
  13129.     unsigned int version;      
  13130.  
  13131.     int blockSize;        
  13132.  
  13133.     
  13134.  
  13135.  
  13136.     int maxCheckPointBlocks;  
  13137.     int checkPointOffset[2];
  13138.  
  13139.  
  13140.  
  13141.     int logStartOffset;     
  13142.     int     checkpointInterval;    
  13143.     int  maxNumCacheBlocks;     
  13144.     int     domainUID;        
  13145.     int     partition;        
  13146.     char reserved[128-11*sizeof(int)];
  13147.                 
  13148.  
  13149. } LfsSuperBlockHdr;
  13150.  
  13151.  
  13152.  
  13153.  
  13154.  
  13155.  
  13156.  
  13157.  
  13158. typedef struct LfsSuperBlock {
  13159.     LfsSuperBlockHdr  hdr;    
  13160.     int        reserved;    
  13161.     LfsDescMapParams  descMap;    
  13162.     LfsSegUsageParams usageArray; 
  13163.     LfsFileLayoutParams fileLayout; 
  13164.     char padding[    512-sizeof(LfsFileLayoutParams) - 
  13165.          sizeof(LfsSegUsageParams)-sizeof(LfsDescMapParams) -
  13166.          sizeof(int) - sizeof(LfsSuperBlockHdr)];    
  13167. } LfsSuperBlock;
  13168.  
  13169.  
  13170.  
  13171.  
  13172.  
  13173.  
  13174.  
  13175.  
  13176.  
  13177. typedef struct LfsCheckPointHdr {
  13178.     unsigned int timestamp;    
  13179.     int size;            
  13180.     unsigned int version;    
  13181.     char domainPrefix[64];    
  13182.     int     domainNumber;        
  13183.     int     attachSeconds;        
  13184.     int     detachSeconds;        
  13185.     int     serverID;        
  13186. } LfsCheckPointHdr;
  13187.  
  13188. typedef struct LfsCheckPointRegion {
  13189.     unsigned int type;        
  13190.  
  13191.     int size;            
  13192. } LfsCheckPointRegion;
  13193.  
  13194. typedef struct LfsCheckPointTrailer {
  13195.     unsigned int timestamp;    
  13196.  
  13197.     unsigned int checkSum;    
  13198.  
  13199. } LfsCheckPointTrailer;
  13200.  
  13201.  
  13202.  
  13203.  
  13204.  
  13205.  
  13206.  
  13207. # 122 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  13208.  
  13209.  
  13210.  
  13211. # 56 "lfsrebuild.c"
  13212.  
  13213. # 1 "/sprite/lib/include/kernel/lfsUsageArray.h"
  13214.  
  13215.  
  13216.  
  13217.  
  13218.  
  13219.  
  13220.  
  13221.  
  13222.  
  13223.  
  13224.  
  13225.  
  13226.  
  13227.  
  13228.  
  13229.  
  13230.  
  13231.  
  13232.  
  13233.  
  13234.  
  13235.  
  13236.  
  13237.  
  13238.  
  13239.  
  13240.  
  13241.  
  13242.  
  13243.  
  13244.  
  13245.  
  13246.  
  13247.  
  13248.  
  13249.  
  13250.  
  13251.  
  13252.  
  13253.  
  13254.  
  13255.  
  13256.  
  13257.  
  13258.  
  13259.  
  13260.  
  13261.  
  13262.  
  13263.  
  13264.  
  13265.  
  13266.  
  13267. # 103 "/sprite/lib/include/kernel/lfsUsageArray.h"
  13268.  
  13269.  
  13270. # 57 "lfsrebuild.c"
  13271.  
  13272. # 1 "/sprite/lib/include/kernel/lfsStats.h"
  13273.  
  13274.  
  13275.  
  13276.  
  13277.  
  13278.  
  13279.  
  13280.  
  13281.  
  13282.  
  13283.  
  13284.  
  13285.  
  13286.  
  13287.  
  13288.  
  13289.  
  13290.  
  13291.  
  13292.  
  13293.  
  13294.  
  13295.  
  13296.  
  13297. typedef struct LfsStatsCounter {
  13298.     unsigned int high;    
  13299.     unsigned int low;    
  13300. } LfsStatsCounter; 
  13301.  
  13302.  
  13303.  
  13304. # 37 "/sprite/lib/include/kernel/lfsStats.h"
  13305.  
  13306.  
  13307.  
  13308.  
  13309.  
  13310.  
  13311. typedef struct Lfs_StatsVersion1 {
  13312.     int    version;    
  13313.     int    size;        
  13314.     
  13315.  
  13316.  
  13317.     struct LfsLogStats {
  13318.     LfsStatsCounter segWrites;     
  13319.     LfsStatsCounter partialWrites; 
  13320.     LfsStatsCounter emptyWrites;   
  13321.     LfsStatsCounter blocksWritten; 
  13322.     LfsStatsCounter bytesWritten;   
  13323.     LfsStatsCounter summaryBlocksWritten; 
  13324.  
  13325.     LfsStatsCounter summaryBytesWritten; 
  13326.     LfsStatsCounter wasteBlocks;      
  13327.     LfsStatsCounter newSegments;      
  13328.     LfsStatsCounter cleanSegWait;     
  13329.     LfsStatsCounter useOldSegment;    
  13330.  
  13331.     LfsStatsCounter locks;          
  13332.     LfsStatsCounter lockWaits;   
  13333.  
  13334.     
  13335.  
  13336.  
  13337.  
  13338.  
  13339.     LfsStatsCounter fsyncWrites;        
  13340.     LfsStatsCounter fsyncPartialWrites;    
  13341.     LfsStatsCounter fsyncBytes;        
  13342.     LfsStatsCounter fsyncPartialBytes;    
  13343.     LfsStatsCounter partialWriteBytes;    
  13344.     LfsStatsCounter cleanPartialWriteBytes;
  13345.     LfsStatsCounter fileBytesWritten;    
  13346.     LfsStatsCounter cleanFileBytesWritten;    
  13347.     LfsStatsCounter partialFileBytes;    
  13348.  
  13349.     LfsStatsCounter padding[7];
  13350.     } log;
  13351.     
  13352.  
  13353.  
  13354.     struct LfsCheckPointStats {
  13355.     LfsStatsCounter count;       
  13356.     LfsStatsCounter segWrites;     
  13357.     LfsStatsCounter blocksWritten; 
  13358.     LfsStatsCounter bytesWritten; 
  13359.  
  13360.     LfsStatsCounter totalBlocks; 
  13361.     LfsStatsCounter totalBytes;  
  13362.     LfsStatsCounter samples;     
  13363.     LfsStatsCounter padding[15];
  13364.     } checkpoint;
  13365.  
  13366.  
  13367.     struct LfsLogCleanStats {
  13368.     LfsStatsCounter startRequests;    
  13369.     LfsStatsCounter alreadyActive;    
  13370.  
  13371.     LfsStatsCounter getSegsRequests; 
  13372.     LfsStatsCounter segsToClean;        
  13373.     LfsStatsCounter numSegsToClean;    
  13374.     LfsStatsCounter segReads;        
  13375.     LfsStatsCounter readErrors;            
  13376.     LfsStatsCounter readEmpty;        
  13377.     LfsStatsCounter bytesCleaned;        
  13378.     LfsStatsCounter cacheBlocksUsed;    
  13379.     LfsStatsCounter segWrites;       
  13380.     LfsStatsCounter blocksWritten; 
  13381.     LfsStatsCounter bytesWritten;      
  13382.  
  13383.     LfsStatsCounter summaryBlocksRead;    
  13384.  
  13385.     LfsStatsCounter padding[16];
  13386.     } cleaning;
  13387.  
  13388.     struct LfsBlockIOStats {
  13389.     LfsStatsCounter reads;    
  13390.     LfsStatsCounter bytesReads;    
  13391.     LfsStatsCounter allocs;        
  13392.     LfsStatsCounter fastAllocs;        
  13393.     LfsStatsCounter slowAllocs;        
  13394.     LfsStatsCounter slowAllocFails; 
  13395.     LfsStatsCounter totalBytesRead; 
  13396.     LfsStatsCounter totalBytesWritten; 
  13397.     LfsStatsCounter segCacheHits;        
  13398.     LfsStatsCounter padding[15];
  13399.     } blockio;
  13400.  
  13401.     struct LfsDescStats {
  13402.     LfsStatsCounter fetches;    
  13403.     LfsStatsCounter goodFetch;  
  13404.     LfsStatsCounter fetchCacheMiss; 
  13405.     LfsStatsCounter fetchSearched;  
  13406.     LfsStatsCounter stores;    
  13407.     LfsStatsCounter freeStores;    
  13408.     LfsStatsCounter accessTimeUpdate; 
  13409.     LfsStatsCounter dirtyList;          
  13410.     LfsStatsCounter truncs;    
  13411.     LfsStatsCounter truncSizeZero;    
  13412.     LfsStatsCounter delete;    
  13413.     LfsStatsCounter inits;    
  13414.     LfsStatsCounter getNewFileNumber; 
  13415.     LfsStatsCounter scans;          
  13416.     LfsStatsCounter free;          
  13417.     LfsStatsCounter mapBlocksWritten; 
  13418.     LfsStatsCounter mapBlockCleaned;  
  13419.     LfsStatsCounter descMoved;          
  13420.     LfsStatsCounter descMapBlockAccess;  
  13421.     LfsStatsCounter descMapBlockMiss;    
  13422.     LfsStatsCounter residentCount;          
  13423.     LfsStatsCounter cleaningFetch;          
  13424.     LfsStatsCounter cleaningFetchMiss;   
  13425.     LfsStatsCounter padding[11];
  13426.     } desc;
  13427.     struct LfsIndexStats {
  13428.     LfsStatsCounter    get;    
  13429.     LfsStatsCounter    set;    
  13430.     LfsStatsCounter getFetchBlock; 
  13431.     LfsStatsCounter setFetchBlock; 
  13432.     LfsStatsCounter growFetchBlock; 
  13433.     LfsStatsCounter getFetchHit; 
  13434.  
  13435.     LfsStatsCounter setFetchHit; 
  13436.  
  13437.     LfsStatsCounter truncs; 
  13438.     LfsStatsCounter deleteFetchBlock; 
  13439.     LfsStatsCounter deleteFetchBlockMiss; 
  13440.     LfsStatsCounter getCleaningFetchBlock; 
  13441.     LfsStatsCounter getCleaningFetchHit;   
  13442.     LfsStatsCounter padding[14];
  13443.     } index;
  13444.  
  13445.     struct LfsFileLayoutStats {
  13446.     LfsStatsCounter calls;    
  13447.     LfsStatsCounter dirtyFiles; 
  13448.     LfsStatsCounter dirtyBlocks; 
  13449.     LfsStatsCounter dirtyBlocksReturned; 
  13450.     LfsStatsCounter filledRegion; 
  13451.     LfsStatsCounter segWrites;      
  13452.     LfsStatsCounter cacheBlocksWritten;      
  13453.     LfsStatsCounter descBlockWritten;    
  13454.     LfsStatsCounter descWritten;      
  13455.     LfsStatsCounter filesWritten;      
  13456.     LfsStatsCounter cleanings;      
  13457.     LfsStatsCounter descBlocksCleaned; 
  13458.  
  13459.     LfsStatsCounter descCleaned; 
  13460.     LfsStatsCounter descCopied;    
  13461.     LfsStatsCounter fileCleaned; 
  13462.     LfsStatsCounter fileVersionOk; 
  13463.  
  13464.     LfsStatsCounter blocksCleaned; 
  13465.  
  13466.     LfsStatsCounter blocksCopied;  
  13467.     LfsStatsCounter blocksCopiedHit; 
  13468.  
  13469.     LfsStatsCounter cleanNoHandle;    
  13470.     LfsStatsCounter cleanLockedHandle; 
  13471.  
  13472.     
  13473.  
  13474.  
  13475.  
  13476.     LfsStatsCounter descLayoutBytes;    
  13477.  
  13478.     LfsStatsCounter padding[13];
  13479.     } layout;
  13480.  
  13481.     struct LfsSegUsageStats {
  13482.     LfsStatsCounter blocksFreed; 
  13483.     LfsStatsCounter bytesFreed;
  13484.     LfsStatsCounter usageSet;
  13485.     LfsStatsCounter blocksWritten;
  13486.     LfsStatsCounter blocksCleaned;
  13487.     LfsStatsCounter segUsageBlockAccess;  
  13488.     LfsStatsCounter segUsageBlockMiss;    
  13489.     LfsStatsCounter residentCount;          
  13490.     LfsStatsCounter padding[13];
  13491.     } segusage;
  13492.  
  13493.     struct LfsCacheBackendStats {
  13494.     LfsStatsCounter startRequests;    
  13495.     LfsStatsCounter alreadyActive;    
  13496.  
  13497.     LfsStatsCounter padding[16];
  13498.     } backend;
  13499.  
  13500.     struct LfsDirLogStats {
  13501.     LfsStatsCounter entryAllocNew;      
  13502.  
  13503.     LfsStatsCounter entryAllocOld;      
  13504.  
  13505.     LfsStatsCounter entryAllocFound; 
  13506.  
  13507.     LfsStatsCounter entryAllocWaits; 
  13508.     LfsStatsCounter newLogBlock; 
  13509.     LfsStatsCounter fastFindFail; 
  13510.     LfsStatsCounter findEntrySearch;
  13511.     LfsStatsCounter dataBlockWritten;
  13512.     LfsStatsCounter blockWritten;
  13513.     LfsStatsCounter bytesWritten;
  13514.                     
  13515.  
  13516.     LfsStatsCounter cleaningBytesWritten;    
  13517.     LfsStatsCounter padding[1];
  13518.     } dirlog;
  13519.     unsigned int cleaningDist[64];
  13520. } Lfs_StatsVersion1;
  13521.  
  13522.  
  13523. typedef Lfs_StatsVersion1 Lfs_Stats;
  13524.  
  13525.  
  13526.  
  13527. # 58 "lfsrebuild.c"
  13528.  
  13529.  
  13530. # 1 "./fscheck.h"
  13531.  
  13532.  
  13533.  
  13534.  
  13535.  
  13536.  
  13537.  
  13538.  
  13539.  
  13540.  
  13541.  
  13542.  
  13543.  
  13544.  
  13545. # 17 "./fscheck.h"
  13546.  
  13547.  
  13548. # 1 "/sprite/lib/include/cfuncproto.h"
  13549.  
  13550.  
  13551.  
  13552.  
  13553.  
  13554.  
  13555.  
  13556.  
  13557.  
  13558.  
  13559.  
  13560.  
  13561.  
  13562.  
  13563.  
  13564.  
  13565.  
  13566.  
  13567.  
  13568.  
  13569.  
  13570.  
  13571.  
  13572.  
  13573.  
  13574.  
  13575.  
  13576.  
  13577.  
  13578.  
  13579.  
  13580.  
  13581.  
  13582. # 76 "/sprite/lib/include/cfuncproto.h"
  13583.  
  13584.  
  13585. # 19 "./fscheck.h"
  13586.  
  13587. # 1 "/sprite/lib/include/disk.h"
  13588.  
  13589.  
  13590.  
  13591.  
  13592.  
  13593.  
  13594.  
  13595.  
  13596.  
  13597.  
  13598.  
  13599.  
  13600.  
  13601.  
  13602.  
  13603.  
  13604.  
  13605.  
  13606.  
  13607.  
  13608.  
  13609.  
  13610. # 1 "/sprite/lib/include/sys/file.h"
  13611.  
  13612.  
  13613.  
  13614.  
  13615.  
  13616.  
  13617.  
  13618.  
  13619.  
  13620.  
  13621.  
  13622.  
  13623.  
  13624.  
  13625.  
  13626.  
  13627.  
  13628.  
  13629.  
  13630.  
  13631. # 99 "/sprite/lib/include/sys/file.h"
  13632.  
  13633. # 23 "/sprite/lib/include/disk.h"
  13634.  
  13635.  
  13636. # 1 "/sprite/lib/include/kernel/fs.h"
  13637.  
  13638.  
  13639.  
  13640.  
  13641.  
  13642.  
  13643.  
  13644.  
  13645.  
  13646.  
  13647.  
  13648.  
  13649.  
  13650.  
  13651.  
  13652.  
  13653.  
  13654.  
  13655.  
  13656.  
  13657.  
  13658.  
  13659.  
  13660.  
  13661.  
  13662.  
  13663.  
  13664.  
  13665.  
  13666.  
  13667.  
  13668.  
  13669.  
  13670.  
  13671.  
  13672.  
  13673.  
  13674.  
  13675.  
  13676.  
  13677.  
  13678.  
  13679.  
  13680.  
  13681.  
  13682.  
  13683.  
  13684.  
  13685.  
  13686.  
  13687.  
  13688.  
  13689.  
  13690.  
  13691.  
  13692.  
  13693.  
  13694.  
  13695.  
  13696.  
  13697.  
  13698.  
  13699.  
  13700.  
  13701.  
  13702.  
  13703.  
  13704.  
  13705.  
  13706.  
  13707.  
  13708.  
  13709.  
  13710.  
  13711.  
  13712.  
  13713.  
  13714.  
  13715.  
  13716.  
  13717.  
  13718.  
  13719.  
  13720.  
  13721.  
  13722.  
  13723.  
  13724.  
  13725.  
  13726.  
  13727.  
  13728.  
  13729.  
  13730.  
  13731.  
  13732.  
  13733.  
  13734.  
  13735.  
  13736.  
  13737.  
  13738.  
  13739.  
  13740.  
  13741.  
  13742.  
  13743.  
  13744.  
  13745.  
  13746.  
  13747.  
  13748.  
  13749.  
  13750.  
  13751.  
  13752.  
  13753.  
  13754.  
  13755.  
  13756.  
  13757.  
  13758.  
  13759.  
  13760.  
  13761.  
  13762.  
  13763.  
  13764.  
  13765.  
  13766.  
  13767.  
  13768.  
  13769.  
  13770.  
  13771.  
  13772.  
  13773.  
  13774.  
  13775.  
  13776.  
  13777.  
  13778.  
  13779.  
  13780.  
  13781.  
  13782.  
  13783.  
  13784.  
  13785.  
  13786.  
  13787.  
  13788.  
  13789.  
  13790.  
  13791.  
  13792.  
  13793.  
  13794.  
  13795.  
  13796.  
  13797.  
  13798.  
  13799.  
  13800.  
  13801.  
  13802.  
  13803.  
  13804.  
  13805.  
  13806.  
  13807.  
  13808.  
  13809.  
  13810.  
  13811.  
  13812.  
  13813.  
  13814.  
  13815.  
  13816.  
  13817.  
  13818.  
  13819.  
  13820.  
  13821.  
  13822.  
  13823.  
  13824.  
  13825.  
  13826.  
  13827.  
  13828.  
  13829.  
  13830.  
  13831.  
  13832.  
  13833.  
  13834.  
  13835.  
  13836.  
  13837.  
  13838.  
  13839.  
  13840.  
  13841.  
  13842.  
  13843.  
  13844.  
  13845.  
  13846.  
  13847.  
  13848.  
  13849.  
  13850.  
  13851.  
  13852.  
  13853.  
  13854.  
  13855.  
  13856.  
  13857.  
  13858.  
  13859.  
  13860.  
  13861.  
  13862.  
  13863.  
  13864.  
  13865.  
  13866.  
  13867.  
  13868.  
  13869.  
  13870.  
  13871.  
  13872.  
  13873.  
  13874.  
  13875.  
  13876.  
  13877.  
  13878.  
  13879.  
  13880.  
  13881.  
  13882.  
  13883.  
  13884.  
  13885. # 584 "/sprite/lib/include/kernel/fs.h"
  13886.  
  13887. # 25 "/sprite/lib/include/disk.h"
  13888.  
  13889. # 1 "/sprite/lib/include/kernel/dev.h"
  13890.  
  13891.  
  13892.  
  13893.  
  13894.  
  13895.  
  13896.  
  13897.  
  13898.  
  13899.  
  13900.  
  13901.  
  13902.  
  13903.  
  13904.  
  13905.  
  13906.  
  13907.  
  13908.  
  13909.  
  13910.  
  13911.  
  13912.  
  13913.  
  13914. # 63 "/sprite/lib/include/kernel/dev.h"
  13915.  
  13916. # 26 "/sprite/lib/include/disk.h"
  13917.  
  13918. # 1 "/sprite/lib/include/kernel/fsdm.h"
  13919.  
  13920.  
  13921.  
  13922.  
  13923.  
  13924.  
  13925.  
  13926.  
  13927.  
  13928.  
  13929.  
  13930.  
  13931.  
  13932.  
  13933.  
  13934.  
  13935.  
  13936.  
  13937.  
  13938.  
  13939.  
  13940.  
  13941.  
  13942.  
  13943.  
  13944.  
  13945.  
  13946.  
  13947.  
  13948.  
  13949.  
  13950.  
  13951.  
  13952.  
  13953.  
  13954.  
  13955.  
  13956.  
  13957.  
  13958.  
  13959.  
  13960.  
  13961.  
  13962.  
  13963.  
  13964.  
  13965.  
  13966.  
  13967.  
  13968.  
  13969.  
  13970.  
  13971.  
  13972.  
  13973.  
  13974.  
  13975.  
  13976.  
  13977.  
  13978.  
  13979.  
  13980.  
  13981.  
  13982.  
  13983.  
  13984.  
  13985.  
  13986.  
  13987.  
  13988.  
  13989.  
  13990.  
  13991.  
  13992.  
  13993.  
  13994.  
  13995.  
  13996.  
  13997.  
  13998.  
  13999.  
  14000.  
  14001.  
  14002.  
  14003.  
  14004.  
  14005.  
  14006.  
  14007.  
  14008.  
  14009.  
  14010.  
  14011.  
  14012.  
  14013.  
  14014.  
  14015.  
  14016.  
  14017.  
  14018.  
  14019.  
  14020.  
  14021.  
  14022.  
  14023.  
  14024.  
  14025.  
  14026.  
  14027.  
  14028.  
  14029.  
  14030.  
  14031.  
  14032.  
  14033.  
  14034.  
  14035.  
  14036.  
  14037.  
  14038.  
  14039.  
  14040.  
  14041.  
  14042.  
  14043.  
  14044.  
  14045.  
  14046.  
  14047.  
  14048.  
  14049.  
  14050.  
  14051.  
  14052.  
  14053.  
  14054.  
  14055.  
  14056.  
  14057.  
  14058.  
  14059.  
  14060.  
  14061.  
  14062.  
  14063.  
  14064.  
  14065.  
  14066.  
  14067.  
  14068.  
  14069.  
  14070.  
  14071.  
  14072.  
  14073.  
  14074.  
  14075.  
  14076.  
  14077.  
  14078.  
  14079.  
  14080.  
  14081.  
  14082.  
  14083.  
  14084.  
  14085.  
  14086.  
  14087. # 481 "/sprite/lib/include/kernel/fsdm.h"
  14088.  
  14089. # 27 "/sprite/lib/include/disk.h"
  14090.  
  14091. # 1 "/sprite/lib/include/kernel/ofs.h"
  14092.  
  14093.  
  14094.  
  14095.  
  14096.  
  14097.  
  14098.  
  14099.  
  14100.  
  14101.  
  14102.  
  14103.  
  14104.  
  14105.  
  14106.  
  14107.  
  14108. # 23 "/sprite/lib/include/kernel/ofs.h"
  14109.  
  14110.  
  14111. # 1 "/sprite/lib/include/kernel/dev.h"
  14112.  
  14113.  
  14114.  
  14115.  
  14116.  
  14117.  
  14118.  
  14119.  
  14120.  
  14121.  
  14122.  
  14123.  
  14124.  
  14125.  
  14126.  
  14127.  
  14128.  
  14129.  
  14130.  
  14131.  
  14132.  
  14133.  
  14134.  
  14135.  
  14136. # 63 "/sprite/lib/include/kernel/dev.h"
  14137.  
  14138. # 25 "/sprite/lib/include/kernel/ofs.h"
  14139.  
  14140. # 1 "/sprite/lib/include/kernel/fslcl.h"
  14141.  
  14142.  
  14143.  
  14144.  
  14145.  
  14146.  
  14147.  
  14148.  
  14149.  
  14150.  
  14151.  
  14152.  
  14153.  
  14154.  
  14155.  
  14156.  
  14157.  
  14158.  
  14159.  
  14160.  
  14161.  
  14162.  
  14163.  
  14164.  
  14165.  
  14166.  
  14167.  
  14168.  
  14169.  
  14170.  
  14171.  
  14172.  
  14173. # 71 "/sprite/lib/include/kernel/fslcl.h"
  14174.  
  14175. # 26 "/sprite/lib/include/kernel/ofs.h"
  14176.  
  14177. # 1 "/sprite/lib/include/kernel/fsdm.h"
  14178.  
  14179.  
  14180.  
  14181.  
  14182.  
  14183.  
  14184.  
  14185.  
  14186.  
  14187.  
  14188.  
  14189.  
  14190.  
  14191.  
  14192.  
  14193.  
  14194.  
  14195.  
  14196.  
  14197.  
  14198.  
  14199.  
  14200.  
  14201.  
  14202.  
  14203.  
  14204.  
  14205.  
  14206.  
  14207.  
  14208.  
  14209.  
  14210.  
  14211.  
  14212.  
  14213.  
  14214.  
  14215.  
  14216.  
  14217.  
  14218.  
  14219.  
  14220.  
  14221.  
  14222.  
  14223.  
  14224.  
  14225.  
  14226.  
  14227.  
  14228.  
  14229.  
  14230.  
  14231.  
  14232.  
  14233.  
  14234.  
  14235.  
  14236.  
  14237.  
  14238.  
  14239.  
  14240.  
  14241.  
  14242.  
  14243.  
  14244.  
  14245.  
  14246.  
  14247.  
  14248.  
  14249.  
  14250.  
  14251.  
  14252.  
  14253.  
  14254.  
  14255.  
  14256.  
  14257.  
  14258.  
  14259.  
  14260.  
  14261.  
  14262.  
  14263.  
  14264.  
  14265.  
  14266.  
  14267.  
  14268.  
  14269.  
  14270.  
  14271.  
  14272.  
  14273.  
  14274.  
  14275.  
  14276.  
  14277.  
  14278.  
  14279.  
  14280.  
  14281.  
  14282.  
  14283.  
  14284.  
  14285.  
  14286.  
  14287.  
  14288.  
  14289.  
  14290.  
  14291.  
  14292.  
  14293.  
  14294.  
  14295.  
  14296.  
  14297.  
  14298.  
  14299.  
  14300.  
  14301.  
  14302.  
  14303.  
  14304.  
  14305.  
  14306.  
  14307.  
  14308.  
  14309.  
  14310.  
  14311.  
  14312.  
  14313.  
  14314.  
  14315.  
  14316.  
  14317.  
  14318.  
  14319.  
  14320.  
  14321.  
  14322.  
  14323.  
  14324.  
  14325.  
  14326.  
  14327.  
  14328.  
  14329.  
  14330.  
  14331.  
  14332.  
  14333.  
  14334.  
  14335.  
  14336.  
  14337.  
  14338.  
  14339.  
  14340.  
  14341.  
  14342.  
  14343.  
  14344.  
  14345.  
  14346. # 481 "/sprite/lib/include/kernel/fsdm.h"
  14347.  
  14348. # 27 "/sprite/lib/include/kernel/ofs.h"
  14349.  
  14350. # 1 "/sprite/lib/include/kernel/devBlockDevice.h"
  14351.  
  14352.  
  14353.  
  14354.  
  14355.  
  14356.  
  14357.  
  14358.  
  14359.  
  14360.  
  14361.  
  14362.  
  14363.  
  14364.  
  14365.  
  14366.  
  14367.  
  14368.  
  14369.  
  14370.  
  14371.  
  14372.  
  14373.  
  14374.  
  14375.  
  14376.  
  14377.  
  14378.  
  14379.  
  14380.  
  14381.  
  14382.  
  14383.  
  14384.  
  14385.  
  14386.  
  14387.  
  14388.  
  14389.  
  14390.  
  14391. # 1 "/sprite/lib/include/user/fs.h"
  14392.  
  14393.  
  14394.  
  14395.  
  14396.  
  14397.  
  14398.  
  14399.  
  14400.  
  14401.  
  14402.  
  14403.  
  14404.  
  14405.  
  14406.  
  14407.  
  14408.  
  14409.  
  14410.  
  14411.  
  14412.  
  14413.  
  14414.  
  14415.  
  14416.  
  14417.  
  14418.  
  14419.  
  14420.  
  14421.  
  14422.  
  14423.  
  14424.  
  14425.  
  14426.  
  14427.  
  14428.  
  14429.  
  14430.  
  14431.  
  14432.  
  14433.  
  14434.  
  14435.  
  14436.  
  14437.  
  14438.  
  14439.  
  14440.  
  14441.  
  14442.  
  14443.  
  14444.  
  14445.  
  14446.  
  14447.  
  14448.  
  14449.  
  14450.  
  14451.  
  14452.  
  14453.  
  14454.  
  14455.  
  14456.  
  14457.  
  14458.  
  14459.  
  14460.  
  14461.  
  14462.  
  14463.  
  14464.  
  14465.  
  14466.  
  14467.  
  14468.  
  14469.  
  14470.  
  14471.  
  14472.  
  14473.  
  14474.  
  14475.  
  14476.  
  14477.  
  14478.  
  14479.  
  14480.  
  14481.  
  14482.  
  14483.  
  14484.  
  14485.  
  14486.  
  14487.  
  14488.  
  14489.  
  14490.  
  14491.  
  14492.  
  14493.  
  14494.  
  14495.  
  14496.  
  14497.  
  14498.  
  14499.  
  14500.  
  14501.  
  14502.  
  14503.  
  14504.  
  14505.  
  14506.  
  14507.  
  14508.  
  14509.  
  14510.  
  14511.  
  14512.  
  14513.  
  14514.  
  14515.  
  14516.  
  14517.  
  14518.  
  14519.  
  14520.  
  14521.  
  14522.  
  14523.  
  14524.  
  14525.  
  14526.  
  14527.  
  14528.  
  14529.  
  14530.  
  14531.  
  14532.  
  14533.  
  14534.  
  14535.  
  14536.  
  14537.  
  14538.  
  14539.  
  14540.  
  14541.  
  14542.  
  14543.  
  14544.  
  14545.  
  14546.  
  14547.  
  14548.  
  14549.  
  14550.  
  14551.  
  14552.  
  14553.  
  14554.  
  14555.  
  14556.  
  14557.  
  14558.  
  14559.  
  14560.  
  14561.  
  14562.  
  14563.  
  14564.  
  14565.  
  14566.  
  14567.  
  14568.  
  14569.  
  14570.  
  14571.  
  14572.  
  14573.  
  14574.  
  14575.  
  14576.  
  14577.  
  14578.  
  14579.  
  14580.  
  14581.  
  14582.  
  14583.  
  14584.  
  14585.  
  14586.  
  14587.  
  14588.  
  14589.  
  14590.  
  14591.  
  14592.  
  14593.  
  14594.  
  14595.  
  14596.  
  14597.  
  14598.  
  14599.  
  14600.  
  14601.  
  14602.  
  14603.  
  14604.  
  14605.  
  14606.  
  14607.  
  14608.  
  14609.  
  14610.  
  14611.  
  14612.  
  14613.  
  14614.  
  14615.  
  14616.  
  14617.  
  14618.  
  14619.  
  14620.  
  14621.  
  14622.  
  14623.  
  14624.  
  14625.  
  14626.  
  14627.  
  14628.  
  14629.  
  14630.  
  14631.  
  14632.  
  14633.  
  14634.  
  14635.  
  14636.  
  14637.  
  14638.  
  14639.  
  14640.  
  14641.  
  14642.  
  14643.  
  14644.  
  14645.  
  14646.  
  14647.  
  14648.  
  14649.  
  14650.  
  14651.  
  14652.  
  14653.  
  14654.  
  14655.  
  14656.  
  14657.  
  14658.  
  14659.  
  14660.  
  14661.  
  14662.  
  14663.  
  14664.  
  14665.  
  14666.  
  14667.  
  14668.  
  14669.  
  14670.  
  14671. # 619 "/sprite/lib/include/user/fs.h"
  14672.  
  14673. # 41 "/sprite/lib/include/kernel/devBlockDevice.h"
  14674.  
  14675.  
  14676.  
  14677.  
  14678.  
  14679.  
  14680.  
  14681.  
  14682.  
  14683.  
  14684.  
  14685.  
  14686.  
  14687.  
  14688.  
  14689.  
  14690. typedef struct DevBlockDeviceRequest {
  14691.     int            operation;    
  14692.     unsigned int    startAddress;    
  14693.  
  14694.     unsigned int    startAddrHigh;    
  14695.  
  14696.     int            bufferLen;    
  14697.  
  14698.     Address        buffer;        
  14699.     void        (*doneProc) 
  14700.  
  14701.  
  14702.     ();
  14703.                                         
  14704.     ClientData        clientData;    
  14705.  
  14706.                 
  14707.  
  14708.  
  14709.  
  14710.  
  14711.  
  14712.     int            ctrlData[(384/sizeof(int))];
  14713. } DevBlockDeviceRequest;
  14714.  
  14715.  
  14716.  
  14717.  
  14718.  
  14719.  
  14720.  
  14721.  
  14722.  
  14723. typedef struct DevBlockDeviceHandle {
  14724.     ReturnStatus (*blockIOProc) 
  14725.  
  14726.     ();
  14727.                                         
  14728.  
  14729.  
  14730.     ReturnStatus (*IOControlProc) 
  14731.  
  14732.  
  14733.     ();
  14734.                         
  14735.  
  14736.  
  14737.     ReturnStatus (*releaseProc) 
  14738.     ();
  14739.                                         
  14740.  
  14741.  
  14742.     int         minTransferUnit;    
  14743.  
  14744.  
  14745.  
  14746.     int        maxTransferSize;    
  14747.  
  14748.     ClientData    clientData;        
  14749.  
  14750. } DevBlockDeviceHandle;
  14751.  
  14752.  
  14753.  
  14754.  
  14755.  
  14756.  
  14757.  
  14758.  
  14759.  
  14760.  
  14761.  
  14762.  
  14763.  
  14764.  
  14765.  
  14766.  
  14767.  
  14768.  
  14769.  
  14770.  
  14771.  
  14772.  
  14773.  
  14774.  
  14775.  
  14776.  
  14777.  
  14778.  
  14779.  
  14780.  
  14781.  
  14782.  
  14783.  
  14784.  
  14785.  
  14786.  
  14787.  
  14788.  
  14789.  
  14790.  
  14791.  
  14792.  
  14793.  
  14794.  
  14795.  
  14796.  
  14797.  
  14798.  
  14799.  
  14800.  
  14801.  
  14802.  
  14803.  
  14804.  
  14805.  
  14806.  
  14807.  
  14808.  
  14809.  
  14810.  
  14811.  
  14812.  
  14813.  
  14814.  
  14815.  
  14816.  
  14817.  
  14818.  
  14819.  
  14820.  
  14821.  
  14822.  
  14823.  
  14824.  
  14825.  
  14826.  
  14827.  
  14828. extern DevBlockDeviceHandle *Dev_BlockDeviceAttach     ();
  14829. extern ReturnStatus Dev_BlockDeviceRelease     ();
  14830. extern ReturnStatus Dev_BlockDeviceIOSync     ();
  14831.  
  14832. # 204 "/sprite/lib/include/kernel/devBlockDevice.h"
  14833.  
  14834.  
  14835.  
  14836.  
  14837.  
  14838.  
  14839.  
  14840. # 211 "/sprite/lib/include/kernel/devBlockDevice.h"
  14841.  
  14842.  
  14843.  
  14844. # 214 "/sprite/lib/include/kernel/devBlockDevice.h"
  14845.  
  14846.  
  14847.  
  14848.  
  14849.  
  14850. # 28 "/sprite/lib/include/kernel/ofs.h"
  14851.  
  14852.  
  14853.  
  14854.  
  14855.  
  14856.  
  14857.  
  14858.  
  14859. typedef struct Ofs_SummaryInfo {
  14860.     int        numFreeKbytes;        
  14861.     int        numFreeFileDesc;    
  14862.     int        state;            
  14863.     char    domainPrefix[64];
  14864.                     
  14865.     int        domainNumber;        
  14866.  
  14867.  
  14868.     int        flags;            
  14869.     int        attachSeconds;        
  14870.     int        detachSeconds;        
  14871.  
  14872.  
  14873.  
  14874.  
  14875.  
  14876.  
  14877.     int        fixCount;        
  14878.  
  14879.  
  14880.  
  14881.  
  14882.  
  14883.     char pad[512 -
  14884.          (8 * sizeof(int) + 64)];
  14885. } Ofs_SummaryInfo;
  14886.  
  14887.  
  14888.  
  14889.  
  14890.  
  14891.  
  14892.  
  14893.  
  14894.  
  14895.  
  14896.  
  14897.  
  14898.  
  14899.  
  14900.  
  14901.  
  14902.  
  14903.  
  14904.  
  14905.  
  14906.  
  14907.  
  14908.  
  14909.  
  14910.  
  14911.  
  14912.  
  14913.  
  14914.  
  14915.  
  14916.  
  14917.  
  14918.  
  14919.  
  14920.  
  14921.  
  14922.  
  14923.  
  14924.  
  14925.  
  14926.  
  14927.  
  14928.  
  14929.  
  14930.  
  14931.  
  14932. typedef struct OfsCylinder {
  14933.     int    blocksFree;    
  14934. } OfsCylinder;
  14935.  
  14936.  
  14937.  
  14938.  
  14939.  
  14940.  
  14941.  
  14942.  
  14943.  
  14944.  
  14945.  
  14946.  
  14947.  
  14948.  
  14949.  
  14950.  
  14951.  
  14952.  
  14953.  
  14954.  
  14955.  
  14956.  
  14957.  
  14958.  
  14959.  
  14960.  
  14961.  
  14962.  
  14963.  
  14964.  
  14965.  
  14966.  
  14967.  
  14968.  
  14969.  
  14970.  
  14971.  
  14972. typedef struct Ofs_Geometry {
  14973.     
  14974.  
  14975.  
  14976.     int        sectorsPerTrack;
  14977.     int        numHeads;    
  14978.     
  14979.  
  14980.  
  14981.  
  14982.  
  14983.  
  14984.  
  14985.  
  14986.  
  14987.  
  14988.  
  14989.  
  14990.     int        blocksPerRotSet;    
  14991.  
  14992.     int        tracksPerRotSet;    
  14993.  
  14994.  
  14995.  
  14996.  
  14997.     int        rotSetsPerCyl;        
  14998.  
  14999.  
  15000.     int        blocksPerCylinder;    
  15001.  
  15002.     
  15003.  
  15004.  
  15005.  
  15006.  
  15007.  
  15008.  
  15009.  
  15010.  
  15011.  
  15012.  
  15013.  
  15014.  
  15015.  
  15016.  
  15017.  
  15018.  
  15019.  
  15020.  
  15021.     int        blockOffset[32];    
  15022.  
  15023.  
  15024.  
  15025.  
  15026.     int        sortedOffsets[32];    
  15027.  
  15028.     
  15029.  
  15030.  
  15031. } Ofs_Geometry;
  15032.  
  15033.  
  15034.  
  15035.  
  15036.  
  15037.  
  15038.  
  15039.  
  15040. typedef struct Ofs_DomainHeader {
  15041.     unsigned int magic;        
  15042.     int        firstCylinder;    
  15043.  
  15044.  
  15045.  
  15046.     int        numCylinders;    
  15047.  
  15048.     Fs_Device    device;        
  15049.  
  15050.  
  15051.  
  15052.  
  15053.  
  15054.  
  15055.  
  15056.  
  15057.  
  15058.     
  15059.  
  15060.  
  15061.  
  15062.     int        fdBitmapOffset;    
  15063.  
  15064.     int        fdBitmapBlocks;    
  15065.     int        fileDescOffset;    
  15066.  
  15067.  
  15068.     int        numFileDesc;    
  15069.  
  15070.  
  15071.     
  15072.  
  15073.  
  15074.  
  15075.     int        bitmapOffset;    
  15076.     int        bitmapBlocks;    
  15077.     
  15078.  
  15079.  
  15080.     int        dataOffset;    
  15081.     int        dataBlocks;    
  15082.     int        dataCylinders;    
  15083.     
  15084.  
  15085.  
  15086.  
  15087.     Ofs_Geometry    geometry;    
  15088.  
  15089. } Ofs_DomainHeader;
  15090.  
  15091.  
  15092.  
  15093.  
  15094.  
  15095.  
  15096.  
  15097.  
  15098.  
  15099.  
  15100.  
  15101.  
  15102.  
  15103.  
  15104.  
  15105.  
  15106.  
  15107.  
  15108.  
  15109.  
  15110.  
  15111.  
  15112.  
  15113.  
  15114.  
  15115.  
  15116.  
  15117.  
  15118.  
  15119.  
  15120.  
  15121.  
  15122.  
  15123.  
  15124.  
  15125.  
  15126.  
  15127.  
  15128.  
  15129.  
  15130.  
  15131.  
  15132.  
  15133.  
  15134.  
  15135.  
  15136.  
  15137.  
  15138.  
  15139.  
  15140.  
  15141.  
  15142.  
  15143.  
  15144.  
  15145.  
  15146.  
  15147.  
  15148.  
  15149.  
  15150.  
  15151.  
  15152.  
  15153.  
  15154.  
  15155.  
  15156.  
  15157.  
  15158.  
  15159.  
  15160.  
  15161.  
  15162.  
  15163.  
  15164.  
  15165.  
  15166.  
  15167.  
  15168.  
  15169.  
  15170.  
  15171. # 507 "/sprite/lib/include/kernel/ofs.h"
  15172.  
  15173.  
  15174.  
  15175. # 28 "/sprite/lib/include/disk.h"
  15176.  
  15177. # 1 "/sprite/lib/include/kernel/devDiskLabel.h"
  15178.  
  15179.  
  15180.  
  15181.  
  15182.  
  15183.  
  15184.  
  15185.  
  15186.  
  15187.  
  15188.  
  15189.  
  15190.  
  15191.  
  15192.  
  15193.  
  15194.  
  15195.  
  15196.  
  15197.  
  15198.  
  15199.  
  15200.  
  15201.  
  15202.  
  15203.  
  15204.  
  15205.  
  15206.  
  15207.  
  15208.  
  15209.  
  15210.  
  15211.  
  15212.  
  15213.  
  15214.  
  15215.  
  15216.  
  15217.  
  15218.  
  15219.  
  15220.  
  15221.  
  15222.  
  15223.  
  15224.  
  15225.  
  15226.  
  15227.  
  15228.  
  15229.  
  15230.  
  15231.  
  15232.  
  15233.  
  15234.  
  15235.  
  15236.  
  15237.  
  15238.  
  15239.  
  15240.  
  15241.  
  15242.  
  15243.  
  15244.  
  15245.  
  15246.  
  15247.  
  15248.  
  15249.  
  15250.  
  15251.  
  15252.  
  15253.  
  15254.  
  15255.  
  15256.  
  15257.  
  15258.  
  15259.  
  15260.  
  15261.  
  15262.  
  15263.  
  15264.  
  15265.  
  15266. # 203 "/sprite/lib/include/kernel/devDiskLabel.h"
  15267.  
  15268. # 29 "/sprite/lib/include/disk.h"
  15269.  
  15270.  
  15271.  
  15272.  
  15273.  
  15274. # 1 "/sprite/lib/include/kernel/lfsDesc.h"
  15275.  
  15276.  
  15277.  
  15278.  
  15279.  
  15280.  
  15281.  
  15282.  
  15283.  
  15284.  
  15285.  
  15286.  
  15287.  
  15288.  
  15289.  
  15290.  
  15291.  
  15292.  
  15293.  
  15294.  
  15295.  
  15296.  
  15297. # 76 "/sprite/lib/include/kernel/lfsDesc.h"
  15298.  
  15299.  
  15300. # 34 "/sprite/lib/include/disk.h"
  15301.  
  15302. # 1 "/sprite/lib/include/kernel/lfsDescMap.h"
  15303.  
  15304.  
  15305.  
  15306.  
  15307.  
  15308.  
  15309.  
  15310.  
  15311.  
  15312.  
  15313.  
  15314.  
  15315.  
  15316.  
  15317.  
  15318.  
  15319.  
  15320.  
  15321.  
  15322.  
  15323.  
  15324.  
  15325.  
  15326.  
  15327.  
  15328.  
  15329.  
  15330.  
  15331.  
  15332.  
  15333.  
  15334.  
  15335.  
  15336.  
  15337.  
  15338.  
  15339.  
  15340.  
  15341.  
  15342.  
  15343.  
  15344.  
  15345.  
  15346.  
  15347.  
  15348.  
  15349.  
  15350.  
  15351.  
  15352.  
  15353.  
  15354.  
  15355.  
  15356.  
  15357.  
  15358.  
  15359. # 102 "/sprite/lib/include/kernel/lfsDescMap.h"
  15360.  
  15361. # 35 "/sprite/lib/include/disk.h"
  15362.  
  15363. # 1 "/sprite/lib/include/kernel/lfsFileLayout.h"
  15364.  
  15365.  
  15366.  
  15367.  
  15368.  
  15369.  
  15370.  
  15371.  
  15372.  
  15373.  
  15374.  
  15375.  
  15376.  
  15377.  
  15378.  
  15379.  
  15380.  
  15381.  
  15382.  
  15383.  
  15384.  
  15385.  
  15386.  
  15387.  
  15388.  
  15389.  
  15390.  
  15391.  
  15392.  
  15393.  
  15394.  
  15395.  
  15396.  
  15397.  
  15398.  
  15399.  
  15400.  
  15401.  
  15402.  
  15403. # 85 "/sprite/lib/include/kernel/lfsFileLayout.h"
  15404.  
  15405.  
  15406. # 36 "/sprite/lib/include/disk.h"
  15407.  
  15408. # 1 "/sprite/lib/include/kernel/lfsSegLayout.h"
  15409.  
  15410.  
  15411.  
  15412.  
  15413.  
  15414.  
  15415.  
  15416.  
  15417.  
  15418.  
  15419.  
  15420.  
  15421.  
  15422.  
  15423.  
  15424.  
  15425.  
  15426.  
  15427.  
  15428.  
  15429.  
  15430.  
  15431.  
  15432.  
  15433.  
  15434.  
  15435.  
  15436.  
  15437.  
  15438.  
  15439.  
  15440. # 60 "/sprite/lib/include/kernel/lfsSegLayout.h"
  15441.  
  15442.  
  15443. # 37 "/sprite/lib/include/disk.h"
  15444.  
  15445. # 1 "/sprite/lib/include/kernel/lfsStableMem.h"
  15446.  
  15447.  
  15448.  
  15449.  
  15450.  
  15451.  
  15452.  
  15453.  
  15454.  
  15455.  
  15456.  
  15457.  
  15458.  
  15459.  
  15460.  
  15461.  
  15462.  
  15463.  
  15464.  
  15465.  
  15466.  
  15467.  
  15468.  
  15469.  
  15470.  
  15471.  
  15472.  
  15473.  
  15474. # 62 "/sprite/lib/include/kernel/lfsStableMem.h"
  15475.  
  15476.  
  15477. # 38 "/sprite/lib/include/disk.h"
  15478.  
  15479. # 1 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  15480.  
  15481.  
  15482.  
  15483.  
  15484.  
  15485.  
  15486.  
  15487.  
  15488.  
  15489.  
  15490.  
  15491.  
  15492.  
  15493.  
  15494.  
  15495.  
  15496.  
  15497.  
  15498.  
  15499.  
  15500.  
  15501.  
  15502.  
  15503.  
  15504.  
  15505.  
  15506.  
  15507.  
  15508.  
  15509.  
  15510.  
  15511.  
  15512.  
  15513.  
  15514.  
  15515.  
  15516.  
  15517.  
  15518.  
  15519.  
  15520.  
  15521.  
  15522.  
  15523.  
  15524. # 124 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  15525.  
  15526. # 39 "/sprite/lib/include/disk.h"
  15527.  
  15528. # 1 "/sprite/lib/include/kernel/lfsUsageArray.h"
  15529.  
  15530.  
  15531.  
  15532.  
  15533.  
  15534.  
  15535.  
  15536.  
  15537.  
  15538.  
  15539.  
  15540.  
  15541.  
  15542.  
  15543.  
  15544.  
  15545.  
  15546.  
  15547.  
  15548.  
  15549.  
  15550.  
  15551.  
  15552.  
  15553.  
  15554.  
  15555.  
  15556.  
  15557.  
  15558.  
  15559.  
  15560.  
  15561.  
  15562.  
  15563.  
  15564.  
  15565.  
  15566.  
  15567.  
  15568.  
  15569.  
  15570.  
  15571.  
  15572.  
  15573.  
  15574.  
  15575.  
  15576.  
  15577.  
  15578.  
  15579.  
  15580.  
  15581.  
  15582. # 103 "/sprite/lib/include/kernel/lfsUsageArray.h"
  15583.  
  15584.  
  15585. # 40 "/sprite/lib/include/disk.h"
  15586.  
  15587.  
  15588.  
  15589.  
  15590.  
  15591.  
  15592.  
  15593.  
  15594.  
  15595.  
  15596.  
  15597.  
  15598.  
  15599.  
  15600.  
  15601.  
  15602.  
  15603.  
  15604.  
  15605.  
  15606.  
  15607.  
  15608.  
  15609.  
  15610.  
  15611.  
  15612.  
  15613.  
  15614.  
  15615. typedef int Disk_NativeLabelType;
  15616.  
  15617.  
  15618.  
  15619.  
  15620.  
  15621.  
  15622.  
  15623.  
  15624. typedef struct Disk_Partition {
  15625.     int        firstCylinder;        
  15626.     int        numCylinders;        
  15627. } Disk_Partition;
  15628.  
  15629.  
  15630.  
  15631.  
  15632.  
  15633.  
  15634.  
  15635.  
  15636.  
  15637.  
  15638.  
  15639.  
  15640.  
  15641.  
  15642.  
  15643. typedef struct Disk_Label {
  15644.     int    numHeads;        
  15645.     int    numSectors;        
  15646.     int numCylinders;        
  15647.     int numAltCylinders;    
  15648.     char asciiLabel[256];    
  15649.     Disk_Partition partitions[8]; 
  15650.     Disk_NativeLabelType labelType; 
  15651.     char *labelPtr;        
  15652.     int    bootSector;        
  15653.     int    numBootSectors;     
  15654.     int    summarySector;        
  15655.     int    numSummarySectors;     
  15656.     int domainSector;        
  15657.     int numDomainSectors;    
  15658.     int numPartitions;        
  15659.     int asciiLabelLen;        
  15660.     int labelSector;        
  15661. } Disk_Label;
  15662.  
  15663.  
  15664.  
  15665.  
  15666.  
  15667.  
  15668.  
  15669.  
  15670.  
  15671.  
  15672.  
  15673. Disk_Label        *Disk_ReadLabel();
  15674. int            Disk_WriteLabel();
  15675. int            Disk_EraseLabel();
  15676. Disk_Label        *Disk_NewLabel();
  15677. Dec_DiskLabel        *Disk_ReadDecLabel();
  15678. Sun_DiskLabel        *Disk_ReadSunLabel();
  15679. Fsdm_DiskHeader        *Disk_ReadDiskHeader();
  15680. Ofs_SummaryInfo        *Disk_ReadSummaryInfo();
  15681. int            Disk_WriteSummaryInfo();
  15682. Ofs_DomainHeader    *Disk_ReadDomainHeader();
  15683. int            Disk_WriteDomainHeader();
  15684. void            Disk_PrintDomainHeader();
  15685. void            Disk_PrintSummaryInfo();
  15686. int            Disk_BlockWrite();
  15687. int            Disk_SectorWrite();
  15688. int            Disk_BlockRead();
  15689. int            Disk_SectorRead();
  15690. int            Disk_BadBlockRead();
  15691. void            Disk_PrintLabel();
  15692. char            *Disk_GetLabelTypeName();
  15693. void            Disk_PrintFileDescBitmap();
  15694. void            Disk_PrintDataBlockBitmap();
  15695. void            Disk_PrintDirEntry();
  15696.  
  15697.  
  15698. int                     Disk_HasFilesystem();
  15699. LfsSuperBlock*          Disk_ReadLfsSuperBlock();
  15700. ReturnStatus            Disk_WriteLfsSuperBlock();
  15701. LfsCheckPointHdr*       Disk_ReadLfsCheckPointHdr();
  15702. ReturnStatus            Disk_WriteLfsCheckPointHdr();
  15703. ReturnStatus            Disk_WriteLfsCheckPointArea();
  15704. LfsCheckPointTrailer*   Disk_LfsCheckPointTrailer();
  15705. ReturnStatus            Disk_ForEachCheckPointRegion();
  15706. void                    Disk_PrintLfsSuperBlockHdr();
  15707. void                    Disk_PrintLfsStableMemParams();
  15708. void                    Disk_PrintLfsDescMapParams();
  15709. void                    Disk_PrintLfsSegUsageParams();
  15710. void                    Disk_PrintLfsFileLayoutParams();
  15711. void                    Disk_PrintLfsSuperBlock();
  15712. void                    Disk_PrintLfsCheckPointHdr();
  15713. void                    Disk_PrintLfsCheckPointRegion();
  15714. void                    Disk_PrintLfsCheckPointTrailer();
  15715.  
  15716.  
  15717.  
  15718.  
  15719. # 20 "./fscheck.h"
  15720.  
  15721. # 1 "/sprite/lib/include/sys/types.h"
  15722.  
  15723.  
  15724.  
  15725.  
  15726.  
  15727.  
  15728.  
  15729.  
  15730.  
  15731.  
  15732.  
  15733.  
  15734.  
  15735.  
  15736.  
  15737.  
  15738.  
  15739.  
  15740.  
  15741.  
  15742.  
  15743.  
  15744.  
  15745.  
  15746.  
  15747.  
  15748.  
  15749. # 125 "/sprite/lib/include/sys/types.h"
  15750.  
  15751. # 21 "./fscheck.h"
  15752.  
  15753. # 1 "/sprite/lib/include/varargs.h"
  15754.  
  15755.  
  15756.  
  15757.  
  15758.  
  15759.  
  15760.  
  15761.  
  15762.  
  15763.  
  15764.  
  15765. # 35 "/sprite/lib/include/varargs.h"
  15766.  
  15767. # 22 "./fscheck.h"
  15768.  
  15769. # 1 "/sprite/lib/include/stdio.h"
  15770.  
  15771.  
  15772.  
  15773.  
  15774.  
  15775.  
  15776.  
  15777.  
  15778.  
  15779.  
  15780.  
  15781.  
  15782.  
  15783.  
  15784.  
  15785.  
  15786.  
  15787.  
  15788.  
  15789.  
  15790.  
  15791.  
  15792.  
  15793.  
  15794.  
  15795.  
  15796.  
  15797.  
  15798.  
  15799.  
  15800.  
  15801.  
  15802.  
  15803.  
  15804.  
  15805.  
  15806.  
  15807.  
  15808.  
  15809.  
  15810.  
  15811.  
  15812.  
  15813.  
  15814.  
  15815.  
  15816.  
  15817.  
  15818.  
  15819.  
  15820.  
  15821.  
  15822.  
  15823.  
  15824.  
  15825.  
  15826.  
  15827.  
  15828.  
  15829.  
  15830.  
  15831.  
  15832.  
  15833.  
  15834.  
  15835.  
  15836.  
  15837.  
  15838.  
  15839.  
  15840.  
  15841.  
  15842.  
  15843.  
  15844.  
  15845.  
  15846.  
  15847.  
  15848.  
  15849.  
  15850.  
  15851.  
  15852.  
  15853.  
  15854.  
  15855.  
  15856.  
  15857.  
  15858.  
  15859.  
  15860.  
  15861.  
  15862.  
  15863.  
  15864.  
  15865.  
  15866.  
  15867.  
  15868.  
  15869.  
  15870.  
  15871.  
  15872.  
  15873.  
  15874.  
  15875.  
  15876.  
  15877.  
  15878.  
  15879.  
  15880.  
  15881.  
  15882.  
  15883.  
  15884.  
  15885.  
  15886.  
  15887.  
  15888.  
  15889.  
  15890.  
  15891.  
  15892.  
  15893.  
  15894.  
  15895.  
  15896.  
  15897.  
  15898.  
  15899.  
  15900.  
  15901.  
  15902.  
  15903.  
  15904.  
  15905.  
  15906.  
  15907.  
  15908.  
  15909.  
  15910.  
  15911.  
  15912.  
  15913.  
  15914.  
  15915.  
  15916.  
  15917.  
  15918.  
  15919.  
  15920.  
  15921.  
  15922.  
  15923.  
  15924.  
  15925.  
  15926.  
  15927.  
  15928.  
  15929.  
  15930.  
  15931.  
  15932.  
  15933.  
  15934.  
  15935.  
  15936.  
  15937.  
  15938.  
  15939.  
  15940.  
  15941.  
  15942.  
  15943.  
  15944.  
  15945.  
  15946.  
  15947.  
  15948.  
  15949.  
  15950.  
  15951.  
  15952.  
  15953.  
  15954.  
  15955.  
  15956.  
  15957.  
  15958.  
  15959. # 379 "/sprite/lib/include/stdio.h"
  15960.  
  15961. # 23 "./fscheck.h"
  15962.  
  15963. # 1 "/sprite/lib/include/errno.h"
  15964.  
  15965.  
  15966.  
  15967.  
  15968.  
  15969.  
  15970.  
  15971.  
  15972.  
  15973.  
  15974.  
  15975.  
  15976.  
  15977.  
  15978.  
  15979.  
  15980.  
  15981.  
  15982.  
  15983.  
  15984.  
  15985. extern int    errno;        
  15986.  
  15987. extern int    sys_nerr;    
  15988. extern char    *sys_errlist[];    
  15989.  
  15990.  
  15991.  
  15992.  
  15993.  
  15994.  
  15995.  
  15996.  
  15997.  
  15998.  
  15999.  
  16000.  
  16001.  
  16002.  
  16003.  
  16004.  
  16005.  
  16006.  
  16007.  
  16008.  
  16009.  
  16010.  
  16011.  
  16012.  
  16013.  
  16014.  
  16015.  
  16016.  
  16017.  
  16018.  
  16019.  
  16020.  
  16021.  
  16022.  
  16023.  
  16024.  
  16025.  
  16026.  
  16027.  
  16028.  
  16029.  
  16030.  
  16031.  
  16032.  
  16033.  
  16034.  
  16035.  
  16036.  
  16037.  
  16038.  
  16039.  
  16040.  
  16041.  
  16042.  
  16043.  
  16044.  
  16045.  
  16046.  
  16047.  
  16048.  
  16049.  
  16050.  
  16051.  
  16052.  
  16053.  
  16054.  
  16055.  
  16056.  
  16057.  
  16058.  
  16059.  
  16060.  
  16061.  
  16062.  
  16063.  
  16064.  
  16065.  
  16066.  
  16067.  
  16068.  
  16069.  
  16070. # 24 "./fscheck.h"
  16071.  
  16072. # 1 "/sprite/lib/include/stdlib.h"
  16073.  
  16074.  
  16075.  
  16076.  
  16077.  
  16078.  
  16079.  
  16080.  
  16081.  
  16082.  
  16083.  
  16084.  
  16085.  
  16086.  
  16087.  
  16088.  
  16089.  
  16090.  
  16091.  
  16092.  
  16093.  
  16094.  
  16095.  
  16096.  
  16097.  
  16098.  
  16099.  
  16100.  
  16101.  
  16102.  
  16103.  
  16104.  
  16105.  
  16106.  
  16107.  
  16108.  
  16109.  
  16110.  
  16111.  
  16112.  
  16113.  
  16114.  
  16115.  
  16116.  
  16117.  
  16118.  
  16119.  
  16120.  
  16121.  
  16122.  
  16123.  
  16124.  
  16125.  
  16126.  
  16127.  
  16128.  
  16129.  
  16130.  
  16131.  
  16132.  
  16133.  
  16134.  
  16135.  
  16136.  
  16137.  
  16138.  
  16139.  
  16140. # 202 "/sprite/lib/include/stdlib.h"
  16141.  
  16142. # 25 "./fscheck.h"
  16143.  
  16144. # 1 "/sprite/lib/include/time.h"
  16145.  
  16146.  
  16147.  
  16148.  
  16149.  
  16150.  
  16151.  
  16152.  
  16153.  
  16154.  
  16155. # 51 "/sprite/lib/include/time.h"
  16156.  
  16157. # 26 "./fscheck.h"
  16158.  
  16159. # 1 "/sprite/lib/include/sys/time.h"
  16160.  
  16161.  
  16162.  
  16163.  
  16164.  
  16165.  
  16166.  
  16167.  
  16168.  
  16169.  
  16170.  
  16171.  
  16172.  
  16173.  
  16174.  
  16175.  
  16176.  
  16177.  
  16178.  
  16179. # 74 "/sprite/lib/include/sys/time.h"
  16180.  
  16181. # 27 "./fscheck.h"
  16182.  
  16183. # 1 "/sprite/lib/include/alloca.h"
  16184.  
  16185.  
  16186.  
  16187.  
  16188.  
  16189.  
  16190.  
  16191.  
  16192.  
  16193.  
  16194.  
  16195.  
  16196.  
  16197.  
  16198.  
  16199.  
  16200.  
  16201.  
  16202.  
  16203. # 30 "/sprite/lib/include/alloca.h"
  16204.  
  16205.  
  16206. # 28 "./fscheck.h"
  16207.  
  16208. # 1 "/sprite/lib/include/bstring.h"
  16209.  
  16210.  
  16211.  
  16212.  
  16213.  
  16214.  
  16215.  
  16216.  
  16217.  
  16218.  
  16219.  
  16220.  
  16221.  
  16222.  
  16223.  
  16224.  
  16225.  
  16226. # 28 "/sprite/lib/include/bstring.h"
  16227.  
  16228. # 29 "./fscheck.h"
  16229.  
  16230.  
  16231. # 1 "/sprite/lib/include/kernel/lfsDesc.h"
  16232.  
  16233.  
  16234.  
  16235.  
  16236.  
  16237.  
  16238.  
  16239.  
  16240.  
  16241.  
  16242.  
  16243.  
  16244.  
  16245.  
  16246.  
  16247.  
  16248.  
  16249.  
  16250.  
  16251.  
  16252.  
  16253.  
  16254. # 76 "/sprite/lib/include/kernel/lfsDesc.h"
  16255.  
  16256.  
  16257. # 31 "./fscheck.h"
  16258.  
  16259. # 1 "/sprite/lib/include/kernel/lfsDescMap.h"
  16260.  
  16261.  
  16262.  
  16263.  
  16264.  
  16265.  
  16266.  
  16267.  
  16268.  
  16269.  
  16270.  
  16271.  
  16272.  
  16273.  
  16274.  
  16275.  
  16276.  
  16277.  
  16278.  
  16279.  
  16280.  
  16281.  
  16282.  
  16283.  
  16284.  
  16285.  
  16286.  
  16287.  
  16288.  
  16289.  
  16290.  
  16291.  
  16292.  
  16293.  
  16294.  
  16295.  
  16296.  
  16297.  
  16298.  
  16299.  
  16300.  
  16301.  
  16302.  
  16303.  
  16304.  
  16305.  
  16306.  
  16307.  
  16308.  
  16309.  
  16310.  
  16311.  
  16312.  
  16313.  
  16314.  
  16315.  
  16316. # 102 "/sprite/lib/include/kernel/lfsDescMap.h"
  16317.  
  16318. # 32 "./fscheck.h"
  16319.  
  16320. # 1 "/sprite/lib/include/kernel/lfsFileLayout.h"
  16321.  
  16322.  
  16323.  
  16324.  
  16325.  
  16326.  
  16327.  
  16328.  
  16329.  
  16330.  
  16331.  
  16332.  
  16333.  
  16334.  
  16335.  
  16336.  
  16337.  
  16338.  
  16339.  
  16340.  
  16341.  
  16342.  
  16343.  
  16344.  
  16345.  
  16346.  
  16347.  
  16348.  
  16349.  
  16350.  
  16351.  
  16352.  
  16353.  
  16354.  
  16355.  
  16356.  
  16357.  
  16358.  
  16359.  
  16360. # 85 "/sprite/lib/include/kernel/lfsFileLayout.h"
  16361.  
  16362.  
  16363. # 33 "./fscheck.h"
  16364.  
  16365. # 1 "/sprite/lib/include/kernel/lfsDirOpLog.h"
  16366.  
  16367.  
  16368.  
  16369.  
  16370.  
  16371.  
  16372.  
  16373.  
  16374.  
  16375.  
  16376.  
  16377.  
  16378.  
  16379.  
  16380.  
  16381.  
  16382.  
  16383.  
  16384.  
  16385. # 54 "/sprite/lib/include/kernel/lfsDirOpLog.h"
  16386.  
  16387.  
  16388. # 34 "./fscheck.h"
  16389.  
  16390. # 1 "/sprite/lib/include/kernel/lfsSegLayout.h"
  16391.  
  16392.  
  16393.  
  16394.  
  16395.  
  16396.  
  16397.  
  16398.  
  16399.  
  16400.  
  16401.  
  16402.  
  16403.  
  16404.  
  16405.  
  16406.  
  16407.  
  16408.  
  16409.  
  16410.  
  16411.  
  16412.  
  16413.  
  16414.  
  16415.  
  16416.  
  16417.  
  16418.  
  16419.  
  16420.  
  16421.  
  16422. # 60 "/sprite/lib/include/kernel/lfsSegLayout.h"
  16423.  
  16424.  
  16425. # 35 "./fscheck.h"
  16426.  
  16427. # 1 "/sprite/lib/include/kernel/lfsStableMem.h"
  16428.  
  16429.  
  16430.  
  16431.  
  16432.  
  16433.  
  16434.  
  16435.  
  16436.  
  16437.  
  16438.  
  16439.  
  16440.  
  16441.  
  16442.  
  16443.  
  16444.  
  16445.  
  16446.  
  16447.  
  16448.  
  16449.  
  16450.  
  16451.  
  16452.  
  16453.  
  16454.  
  16455.  
  16456. # 62 "/sprite/lib/include/kernel/lfsStableMem.h"
  16457.  
  16458.  
  16459. # 36 "./fscheck.h"
  16460.  
  16461. # 1 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  16462.  
  16463.  
  16464.  
  16465.  
  16466.  
  16467.  
  16468.  
  16469.  
  16470.  
  16471.  
  16472.  
  16473.  
  16474.  
  16475.  
  16476.  
  16477.  
  16478.  
  16479.  
  16480.  
  16481.  
  16482.  
  16483.  
  16484.  
  16485.  
  16486.  
  16487.  
  16488.  
  16489.  
  16490.  
  16491.  
  16492.  
  16493.  
  16494.  
  16495.  
  16496.  
  16497.  
  16498.  
  16499.  
  16500.  
  16501.  
  16502.  
  16503.  
  16504.  
  16505.  
  16506. # 124 "/sprite/lib/include/kernel/lfsSuperBlock.h"
  16507.  
  16508. # 37 "./fscheck.h"
  16509.  
  16510. # 1 "/sprite/lib/include/kernel/lfsUsageArray.h"
  16511.  
  16512.  
  16513.  
  16514.  
  16515.  
  16516.  
  16517.  
  16518.  
  16519.  
  16520.  
  16521.  
  16522.  
  16523.  
  16524.  
  16525.  
  16526.  
  16527.  
  16528.  
  16529.  
  16530.  
  16531.  
  16532.  
  16533.  
  16534.  
  16535.  
  16536.  
  16537.  
  16538.  
  16539.  
  16540.  
  16541.  
  16542.  
  16543.  
  16544.  
  16545.  
  16546.  
  16547.  
  16548.  
  16549.  
  16550.  
  16551.  
  16552.  
  16553.  
  16554.  
  16555.  
  16556.  
  16557.  
  16558.  
  16559.  
  16560.  
  16561.  
  16562.  
  16563.  
  16564. # 103 "/sprite/lib/include/kernel/lfsUsageArray.h"
  16565.  
  16566.  
  16567. # 38 "./fscheck.h"
  16568.  
  16569. # 1 "/sprite/lib/include/kernel/lfsStats.h"
  16570.  
  16571.  
  16572.  
  16573.  
  16574.  
  16575.  
  16576.  
  16577.  
  16578.  
  16579.  
  16580.  
  16581.  
  16582.  
  16583.  
  16584.  
  16585.  
  16586.  
  16587.  
  16588.  
  16589.  
  16590.  
  16591.  
  16592.  
  16593.  
  16594.  
  16595.  
  16596.  
  16597.  
  16598.  
  16599.  
  16600.  
  16601.  
  16602.  
  16603.  
  16604.  
  16605.  
  16606.  
  16607.  
  16608.  
  16609.  
  16610.  
  16611.  
  16612.  
  16613.  
  16614.  
  16615. # 257 "/sprite/lib/include/kernel/lfsStats.h"
  16616.  
  16617.  
  16618. # 39 "./fscheck.h"
  16619.  
  16620.  
  16621.  
  16622.  
  16623.  
  16624.  
  16625.  
  16626.  
  16627.  
  16628.  
  16629.  
  16630.  
  16631.  
  16632.  
  16633.  
  16634.  
  16635.  
  16636.  
  16637.  
  16638.  
  16639.  
  16640.  
  16641.  
  16642. typedef struct FdInfo {
  16643.     int        addr;
  16644.     int        timestamp;
  16645.     unsigned short truncVersion; 
  16646.     short    flags;        
  16647.     short    origLinkCount;    
  16648.     short    newLinkCount;    
  16649. } FdInfo;
  16650.  
  16651.  
  16652.  
  16653.  
  16654.  
  16655.  
  16656.  
  16657.  
  16658.  
  16659.  
  16660.  
  16661.  
  16662.  
  16663.  
  16664.  
  16665.  
  16666.  
  16667.  
  16668.  
  16669.  
  16670.  
  16671.  
  16672.  
  16673.  
  16674.  
  16675.  
  16676. typedef struct ModListElement {
  16677.     List_Links        links;
  16678.     int            fdNum;
  16679.     Fsdm_FileDescriptor    *fdPtr;
  16680. } ModListElement;
  16681. extern    List_Links    modListHdr;
  16682.  
  16683.  
  16684.  
  16685.  
  16686.  
  16687.  
  16688.  
  16689.  
  16690. typedef struct RelocListElement {
  16691.     List_Links        links;
  16692.     int            newFdNum;
  16693.     Fsdm_FileDescriptor    *fdPtr;
  16694.     int            origFdNum;
  16695. } RelocListElement;
  16696. extern    List_Links    relocListHdr;
  16697.  
  16698.  
  16699. typedef enum {
  16700.     DIRECT, 
  16701.     INDIRECT, 
  16702.     DBL_INDIRECT
  16703. } BlockIndexType;
  16704.  
  16705. typedef enum {
  16706.     FD, 
  16707.     BLOCK, 
  16708. } ParentType;
  16709.  
  16710.  
  16711.  
  16712.  
  16713.  
  16714. typedef struct CopyListElement {
  16715.     List_Links        links;
  16716.     BlockIndexType    blockType;
  16717.     short        fragments;
  16718.     int            index;
  16719.     ParentType        parentType;
  16720.     int            parentNum;
  16721.     Fsdm_FileDescriptor    *fdPtr;
  16722. } CopyListElement;
  16723.  
  16724. extern    List_Links    copyListHdr;
  16725.  
  16726.  
  16727.  
  16728.  
  16729.  
  16730.  
  16731.  
  16732.  
  16733. typedef struct DirIndexInfo {
  16734.     FdInfo         *fdInfoPtr;         
  16735.  
  16736.     Fsdm_FileDescriptor *fdPtr;                  
  16737.  
  16738.     BlockIndexType indexType;             
  16739.  
  16740.  
  16741.     int         blockNum;             
  16742.  
  16743.     int         blockAddr;             
  16744.  
  16745.     int         dirOffset;             
  16746.  
  16747.  
  16748.     char     dirBlock[    4096];    
  16749.  
  16750.     int         numFrags;             
  16751.  
  16752.     int         firstIndex;             
  16753.  
  16754.  
  16755.     int         secondIndex;             
  16756.  
  16757.     char      firstBlock[    4096];  
  16758.     int         firstBlockNil;             
  16759.  
  16760.     char      secondBlock[    4096]; 
  16761.     int         secondBlockNil;         
  16762.  
  16763.     int         dirDirty;             
  16764.  
  16765. } DirIndexInfo;
  16766.  
  16767. extern int    foundError;
  16768. extern Boolean    tooBig;
  16769. extern int    debug;
  16770. extern int    writeDisk;
  16771. extern int    verbose;
  16772. extern    FdInfo        *descInfoArray;
  16773. extern int DiskRead 
  16774.     ();
  16775. extern int DiskWrite 
  16776.     ();
  16777. extern char *GetStableMemEntry     ();
  16778.  
  16779. extern int FetchFileDesc     ();
  16780. extern void StoreFileDesc     ();
  16781. extern void CheckDirTree     ();
  16782. extern void CheckDirEntry     ();
  16783. extern ReturnStatus MakeRoot     ();
  16784. extern int strnlen     ();
  16785. extern int MarkBitmap     ();
  16786. extern int Output     ();
  16787. extern void OutputPerror     ();
  16788. extern void WriteOutputFile     ();
  16789. extern int CloseOutputFile     ();
  16790. extern void ExitHandler     ();
  16791. extern void ClearFd     ();
  16792. extern void AddToCopyList     ();
  16793. extern int main     ();
  16794. extern void CheckFilesystem     ();
  16795. extern void CheckBlocks     ();
  16796. extern int ProcessIndirectBlock     ();
  16797. extern void RelocateFD     ();
  16798. extern int CopyBlock     ();
  16799. extern int FillNewBlock     ();
  16800. extern Boolean LoadUsageArray     ();
  16801. extern Boolean LoadDescMap     ();
  16802. extern char *GetUsageState     ();
  16803. extern int DiskRead     ();
  16804. extern char *GetStableMemEntry     ();
  16805.  
  16806.  
  16807. extern char *sbrk();
  16808.  
  16809.  
  16810.  
  16811.  
  16812.  
  16813. # 233 "./fscheck.h"
  16814.  
  16815.  
  16816.  
  16817.  
  16818. extern LfsSuperBlock    *superBlockPtr;
  16819. extern int        currentTimestamp;
  16820. extern ClientData descMapDataPtr;        
  16821. extern LfsDescMapCheckPoint *descMapCheckPointPtr; 
  16822.  
  16823.  
  16824. ClientData   usageArrayDataPtr;    
  16825.  
  16826.  
  16827.  
  16828.  
  16829.  
  16830.  
  16831. # 250 "./fscheck.h"
  16832.  
  16833.  
  16834.  
  16835.  
  16836.  
  16837.  
  16838.  
  16839.  
  16840.  
  16841.  
  16842.  
  16843.  
  16844.  
  16845.  
  16846.  
  16847.  
  16848.  
  16849. # 60 "lfsrebuild.c"
  16850.  
  16851. # 1 "./layout.h"
  16852.  
  16853.  
  16854.  
  16855.  
  16856. typedef struct LfsSegElement {
  16857.     Address       address;         
  16858.     unsigned int lengthInBlocks;  
  16859.  
  16860.     ClientData   clientData;      
  16861.  
  16862. } LfsSegElement;
  16863.  
  16864.  
  16865.  
  16866.  
  16867. typedef struct LfsSegLogRange {
  16868.     int        current;    
  16869.     int        prevSeg;    
  16870.  
  16871.     int        nextSeg;    
  16872.  
  16873. } LfsSegLogRange;
  16874.  
  16875.  
  16876.  
  16877.  
  16878.  
  16879.  
  16880.  
  16881.  
  16882.  
  16883.  
  16884.  
  16885. typedef struct LfsSeg {
  16886.     LfsSegElement *segElementPtr; 
  16887.  
  16888.     char       *memPtr;    
  16889.     LfsSegLogRange logRange;    
  16890.     int        numElements;      
  16891.  
  16892.     int        numBlocks;        
  16893.     int        startBlockOffset; 
  16894.     int        activeBytes;      
  16895.     
  16896.  
  16897.  
  16898.  
  16899.  
  16900.     LfsSegSummary    *curSegSummaryPtr; 
  16901.  
  16902.     LfsSegSummaryHdr    *curSummaryHdrPtr; 
  16903.                 
  16904.     int         curElement;    
  16905.     int         curBlockOffset;    
  16906.  
  16907.     int         curDataBlockLimit;   
  16908.  
  16909.     char     *curSummaryPtr;    
  16910.     char     *curSummaryLimitPtr; 
  16911.  
  16912.  
  16913. } LfsSeg;
  16914.  
  16915.  
  16916.  
  16917.  
  16918.  
  16919.  
  16920.  
  16921.  
  16922.  
  16923.  
  16924.  
  16925.  
  16926.  
  16927.  
  16928.  
  16929.  
  16930.  
  16931.  
  16932. # 81 "./layout.h"
  16933.  
  16934.  
  16935.  
  16936.  
  16937.  
  16938.  
  16939.  
  16940.  
  16941.  
  16942.  
  16943.  
  16944.  
  16945.  
  16946.  
  16947.  
  16948.  
  16949.  
  16950.  
  16951. # 99 "./layout.h"
  16952.  
  16953.  
  16954.  
  16955.  
  16956.  
  16957.  
  16958.  
  16959.  
  16960.  
  16961.  
  16962. # 109 "./layout.h"
  16963.  
  16964.  
  16965.  
  16966.  
  16967.  
  16968.  
  16969.  
  16970.  
  16971.  
  16972. # 118 "./layout.h"
  16973.  
  16974.  
  16975.  
  16976.  
  16977.  
  16978.  
  16979.  
  16980.  
  16981.  
  16982.  
  16983.  
  16984. # 129 "./layout.h"
  16985.  
  16986.  
  16987.  
  16988.  
  16989.  
  16990.  
  16991.  
  16992.  
  16993.  
  16994.  
  16995.  
  16996.  
  16997. # 141 "./layout.h"
  16998.  
  16999.  
  17000.  
  17001. # 144 "./layout.h"
  17002.  
  17003.  
  17004. # 146 "./layout.h"
  17005.  
  17006.  
  17007.  
  17008. # 149 "./layout.h"
  17009.  
  17010.  
  17011.  
  17012.  
  17013. # 153 "./layout.h"
  17014.  
  17015.  
  17016.  
  17017. extern char *LfsSegSlowGrowSummary 
  17018.  
  17019.     ();
  17020. extern LfsDiskAddr LfsSegSlowDiskAddress 
  17021.     ();
  17022. extern LfsSegElement *LfsSegSlowAddDataBuffer 
  17023.     ();
  17024.  
  17025. extern Boolean WriteSegCheckpoint 
  17026.     ();
  17027.  
  17028.  
  17029. extern Boolean LfsSegUsageCheckpoint 
  17030.     ();
  17031. extern Boolean LfsDescMapCheckpoint 
  17032.     ();
  17033.  
  17034. extern void LfsSegUsageCheckpointUpdate     ();
  17035.  
  17036. extern ReturnStatus LfsGetLogTail 
  17037.     ();
  17038.  
  17039. extern void LfsSetLogTail 
  17040.  
  17041.     ();
  17042.  
  17043. # 61 "lfsrebuild.c"
  17044.  
  17045.  
  17046.  
  17047.  
  17048. LfsSuperBlock    *superBlockPtr;
  17049. int        currentTimestamp;
  17050.  
  17051.  
  17052.  
  17053. ClientData descMapDataPtr;        
  17054. LfsDescMapCheckPoint *descMapCheckPointPtr; 
  17055.  
  17056. LfsSegUsageCheckPoint    *usageCheckPointPtr;
  17057. FdInfo        *descInfoArray;
  17058.  
  17059. ClientData   usageArrayDataPtr;    
  17060.  
  17061.  
  17062. typedef struct Seg {
  17063.     int      segNo;    
  17064.     int      segSizeInBlocks;    
  17065.     int   diskFd;        
  17066. } Seg;
  17067.  
  17068.  
  17069.  
  17070.  
  17071.  
  17072.  
  17073. typedef struct BlockInfo {
  17074.     int     found:1;    
  17075.     int        type :4;    
  17076.     int     tversion:7; 
  17077.     int     blockNum:20; 
  17078.     int     fileNum;    
  17079.  
  17080. } BlockInfo;
  17081.  
  17082.  
  17083. # 100 "lfsrebuild.c"
  17084.  
  17085.  
  17086.  
  17087.  
  17088.  
  17089.  
  17090.  
  17091.  
  17092.  
  17093.  
  17094.  
  17095.  
  17096.  
  17097.  
  17098.  
  17099.  
  17100.  
  17101.  
  17102.  
  17103.  
  17104.  
  17105.  
  17106.  
  17107. char    *blockTypeNames[  8+1] = { 
  17108.     "Unused", "File", "DescMap" , "UsageArray", "Summary", "Checkpoint",
  17109.     "Descriptor", "DirLog", "Unknown" 
  17110. };
  17111.  
  17112. BlockInfo    *blockInfoArray;  
  17113. int        *usageBitMap;      
  17114.  
  17115. int        *foundBitMap;      
  17116.  
  17117. int        *descBlockBitMap;      
  17118. int        numBlocks;      
  17119.  
  17120. int    *activeBytesArray;    
  17121.  
  17122. static Boolean computeUsageArray;
  17123.  
  17124. int    minorErrors;
  17125. int    majorErrors;
  17126.  
  17127.  
  17128.  
  17129.  
  17130. int    blockSize = 512;    
  17131. int    superBlockOffset = 64;    
  17132. Boolean dumpFlag = 0;    
  17133. Boolean showDirLog = 0;    
  17134. Boolean    verboseFlag = 0;    
  17135. char    *deviceName;        
  17136. Boolean    full = 0;
  17137. Boolean oldcp = 0;
  17138. Boolean shownew = 0;
  17139. Boolean doWrites = 0;
  17140.  
  17141. Option optionArray[] = {
  17142.     {        -7, (char *)      0,  (char *)      0,
  17143.     "Check a LFS file system and report problems.\n Synopsis: \"checkLfs [switches] deviceName\"\n Command-line switches are:"},
  17144.     {        -1, "blockSize", (Address) &blockSize, 
  17145.     "Block size of file system."},
  17146.     {        -1, "superBlockOffset", (Address) &superBlockOffset, 
  17147.     "Offset into device of the superBlock."},
  17148.     {    1, "dump", (Address) &dumpFlag, 
  17149.     "Print out a description of file system."},
  17150.     {    1, "showDirLog", (Address) &showDirLog, 
  17151.     "Print out the directory operation log."},
  17152.     {    1, "full", (Address) &full, 
  17153.     "Full a full error analysis."},
  17154.     {    1, "verbose", (Address) &verboseFlag, 
  17155.     "Output progress messages during execution."},
  17156.     {    1, "oldcp", (Address) &oldcp, 
  17157.     "Output progress messages during execution."},
  17158.     {    1, "shownew", (Address) &shownew, 
  17159.     "Print new metadata to standard out."},
  17160.     {    1, "write", (Address) &doWrites, 
  17161.     "Write new metadata to disk."},
  17162. };
  17163.  
  17164.  
  17165.  
  17166. extern Boolean AllocUsageArray     ();
  17167. extern Boolean AllocDescMap     ();
  17168. extern char *GetUsageState     ();
  17169. static void FindAllFiles     ();
  17170. static Boolean CheckFile 
  17171.     ();
  17172. static Boolean CheckIndirectBlock 
  17173.     ();
  17174. static Boolean CheckBlock 
  17175.     ();
  17176. static void ComputeUsageArray     ();
  17177. static void BuildUsageArray     ();
  17178. static void CheckSummaryRegions     ();
  17179. static void CheckSegUsageSummary 
  17180.     ();
  17181. static void CheckDescMapSummary 
  17182.     ();
  17183. static void CheckFileLayoutSummary 
  17184.  
  17185.     ();
  17186. static char *GetOwner     ();
  17187. static void PrintSuperBlock     ();
  17188. static void PrintCheckPointHdr     ();
  17189. static ClientData AllocStableMem     ();
  17190. static void SetStableMemBlockIndex     ();
  17191. static void ShowDirLogBlock     ();
  17192.  
  17193. static char *FmtTime     ();
  17194. static Seg *SegInit     ();
  17195. static int SegStartAddr     ();
  17196. static char *SegFetchBlock     ();
  17197. static void SegReleaseBlock     ();
  17198. static void SegRelease     ();
  17199. static Boolean IsZero     ();
  17200.  
  17201. extern int open();
  17202. extern void panic();
  17203. extern int gettimeofday     ();
  17204.  
  17205.  
  17206.  
  17207.  
  17208.  
  17209.  
  17210.  
  17211.  
  17212.  
  17213.  
  17214.  
  17215.  
  17216.  
  17217.  
  17218.  
  17219.  
  17220.  
  17221. int
  17222. main(argc,argv)
  17223.     int    argc;
  17224.     char *argv[];
  17225. {
  17226.     int       diskFd, maxCheckPointSize;
  17227.     LfsCheckPointHdr    checkPointHdr[2];
  17228.     LfsCheckPointHdr    *checkPointHdrPtr = (LfsCheckPointHdr *)      0;
  17229.     char        *checkPointPtr, *trailerPtr = (char *)      0;
  17230.     LfsCheckPointTrailer *trailPtr = (LfsCheckPointTrailer *)      0;
  17231.     Boolean        gotOne;
  17232.     int            choosenOne, i, try;
  17233.     int            checkPointSize;
  17234.  
  17235.     argc = Opt_Parse(argc, argv, optionArray,     (sizeof(optionArray)/sizeof((optionArray)[0])), 0);
  17236.     if (argc != 2) { 
  17237.          Opt_PrintUsage(argv[0], optionArray,     (sizeof(optionArray)/sizeof((optionArray)[0])));
  17238.      exit(    (char) -4);
  17239.     } else {
  17240.     deviceName = argv[1];
  17241.     }
  17242.     diskFd = open(deviceName, doWrites ?     002         : 000        , 0);
  17243.     if (diskFd < 0) {
  17244.     fprintf((&stdioErrFile),"%s:", argv[0]);
  17245.     perror(deviceName);
  17246.     exit(    (char) -1);
  17247.     }
  17248.     
  17249.  
  17250.  
  17251.     superBlockPtr = (LfsSuperBlock *) malloc(    512);
  17252.     if (DiskRead(diskFd, superBlockOffset, sizeof(LfsSuperBlock), 
  17253.         (char *)superBlockPtr) != sizeof(LfsSuperBlock)) {
  17254.     fprintf((&stdioErrFile),"%s:Can't read superblock.\n", deviceName);
  17255.     exit((char) -2);
  17256.  
  17257.     }
  17258.     if (superBlockPtr->hdr.magic !=     0x106d15c     ) {
  17259.     fprintf((&stdioErrFile),"%s:Bad magic number for filesystem\n", deviceName);
  17260.     exit((char) -2);
  17261.     }
  17262.     if (dumpFlag) {
  17263.        PrintSuperBlock(superBlockPtr);
  17264.     }
  17265.  
  17266.     
  17267.  
  17268.  
  17269.  
  17270.     if (DiskRead(diskFd, superBlockPtr->hdr.checkPointOffset[0],
  17271.         sizeof(LfsCheckPointHdr), (char *) (checkPointHdr+0)) != 
  17272.     sizeof(LfsCheckPointHdr)) {
  17273.     fprintf((&stdioErrFile),"%s:Can't read checkPointHeader 0.\n", deviceName);
  17274.     checkPointHdr[0].timestamp = 0;
  17275.     }
  17276.     if (dumpFlag) {
  17277.     PrintCheckPointHdr(checkPointHdr, 0);
  17278.     }
  17279.     if (DiskRead(diskFd, superBlockPtr->hdr.checkPointOffset[1],
  17280.         sizeof(LfsCheckPointHdr), (char *) (checkPointHdr+1))  != 
  17281.     sizeof(LfsCheckPointHdr)) {
  17282.     fprintf((&stdioErrFile),"%s:Can't read checkPointHeader 1.\n", deviceName);
  17283.     checkPointHdr[1].timestamp = 0;
  17284.     }
  17285.     if (dumpFlag) {
  17286.     PrintCheckPointHdr(checkPointHdr+1, 1);
  17287.     }
  17288.  
  17289.     maxCheckPointSize = superBlockPtr->hdr.maxCheckPointBlocks * 
  17290.                 blockSize;
  17291.     checkPointPtr = malloc(maxCheckPointSize);
  17292.     choosenOne = (checkPointHdr[0].timestamp<checkPointHdr[1].timestamp) ?
  17293.                 1 : 0;
  17294.     currentTimestamp = checkPointHdr[choosenOne].timestamp+1;
  17295.     numBlocks = superBlockPtr->usageArray.numberSegments * 
  17296.             (superBlockPtr->usageArray.segmentSize/blockSize) +
  17297.              superBlockPtr->hdr.logStartOffset;
  17298.     
  17299.  
  17300.  
  17301.  
  17302.     blockInfoArray = (BlockInfo *) calloc(numBlocks, sizeof(BlockInfo));
  17303.     
  17304.  
  17305.  
  17306.     for (i = 0; i < superBlockPtr->hdr.logStartOffset; i++) {
  17307.         blockInfoArray[i].type =  5;
  17308.         blockInfoArray[i].found = 1;
  17309.     }
  17310.     
  17311.  
  17312.  
  17313.  
  17314.     descInfoArray = (FdInfo *) calloc(superBlockPtr->descMap.maxDesc, 
  17315.                     sizeof(FdInfo));
  17316.  
  17317.     
  17318.  
  17319.  
  17320.  
  17321.     activeBytesArray = (int *) calloc(superBlockPtr->usageArray.numberSegments,
  17322.                     sizeof(activeBytesArray[0]));
  17323.     if (oldcp) {
  17324.     choosenOne = !choosenOne;
  17325.     }
  17326.     gotOne = 0;
  17327.     for (try = 0; (try <= 1) && !gotOne; try++) {
  17328.     if (verboseFlag) {
  17329.         printf("%s:Read LFS checkpoint %d from %s\n", FmtTime(), choosenOne,
  17330.             deviceName);
  17331.     }
  17332.     if (DiskRead(diskFd, superBlockPtr->hdr.checkPointOffset[choosenOne],
  17333.             maxCheckPointSize, checkPointPtr) != maxCheckPointSize) {
  17334.         fprintf((&stdioErrFile),"%s:Can't read checkPoint %d\n", deviceName, choosenOne);
  17335.         continue;
  17336.     }
  17337.  
  17338.  
  17339.     checkPointHdrPtr = (LfsCheckPointHdr *) checkPointPtr;
  17340.     trailerPtr = (checkPointPtr + checkPointHdrPtr->size - 
  17341.                     sizeof(LfsCheckPointTrailer));
  17342.     trailPtr = (LfsCheckPointTrailer *) trailerPtr;
  17343.     if (trailPtr->timestamp != checkPointHdrPtr->timestamp) {
  17344.         fprintf((&stdioErrFile),"%s:Header timestamp %d doesn't match trailer timestamp %d on checkpoint %d\n", deviceName, checkPointHdrPtr->timestamp, 
  17345.                 trailPtr->timestamp, choosenOne);
  17346.         continue;
  17347.     }
  17348.     if (dumpFlag) {
  17349.         printf("Using checkpoint area %d with timestamp %d domain %d (%s)\n",
  17350.         choosenOne, checkPointHdrPtr->timestamp, 
  17351.         checkPointHdrPtr->domainNumber, checkPointHdrPtr->domainPrefix);
  17352.     }
  17353.  
  17354.     gotOne = 1;
  17355.  
  17356.     }
  17357.     if (!gotOne) {
  17358.     fprintf((&stdioErrFile),"%s:Can't find good checkpoint region.\n");
  17359.     }
  17360.     AllocUsageArray();
  17361.     AllocDescMap();
  17362.     if (verboseFlag) {
  17363.     printf("%s:Checking summary regions\n", FmtTime());
  17364.     }
  17365.     CheckSummaryRegions(diskFd);
  17366.  
  17367.     FindAllFiles(diskFd);
  17368.     if (verboseFlag) {
  17369.     printf("%s:Checking usage array\n",FmtTime());
  17370.     }
  17371.     ComputeUsageArray(diskFd);
  17372.     BuildUsageArray(diskFd);
  17373.     if (verboseFlag) {
  17374.     printf("%s:Checking directory tree\n",FmtTime());
  17375.     }
  17376.     CheckDirTree(diskFd);
  17377.     WriteSegCheckpoint(diskFd, checkPointPtr + sizeof(LfsCheckPointHdr),
  17378.         &checkPointSize);
  17379.  
  17380.     checkPointHdrPtr->timestamp = ++currentTimestamp;
  17381.     checkPointHdrPtr->size = checkPointSize + sizeof(LfsCheckPointHdr) + 
  17382.              sizeof(LfsCheckPointTrailer);
  17383.     checkPointHdrPtr->version = 1;
  17384.     checkPointHdrPtr->detachSeconds = 0;
  17385.     trailPtr = (LfsCheckPointTrailer *) 
  17386.         (checkPointPtr + checkPointHdrPtr->size - 
  17387.                 sizeof(LfsCheckPointTrailer));
  17388.     trailPtr->timestamp = checkPointHdrPtr->timestamp;
  17389.     trailPtr->checkSum = 0;
  17390.  
  17391.     
  17392.  
  17393.  
  17394.     bzero((char *) (trailPtr + 1), sizeof(Lfs_Stats));
  17395.     if ( DiskWrite(diskFd, superBlockPtr->hdr.checkPointOffset[0], maxCheckPointSize, (char *) checkPointHdrPtr) != maxCheckPointSize) {
  17396.     fprintf((&stdioErrFile),"Can't write checkpoint region\n");
  17397.     }
  17398.     exit(    (char) 0);
  17399.     return     (char) 0;
  17400. }
  17401.  
  17402.  
  17403.  
  17404.  
  17405.  
  17406.  
  17407.  
  17408.  
  17409.  
  17410.  
  17411.  
  17412.  
  17413.  
  17414.  
  17415.  
  17416.  
  17417.  
  17418. Boolean
  17419. AllocUsageArray()
  17420. {
  17421.     LfsSegUsageParams    *usagePtr;
  17422.     LfsStableMemParams  *smemParamsPtr;
  17423.     Boolean ret = 1;
  17424.  
  17425.     usagePtr = &(superBlockPtr->usageArray);
  17426.     smemParamsPtr = &(superBlockPtr->usageArray.stableMem);
  17427.  
  17428.     usageCheckPointPtr =  (LfsSegUsageCheckPoint *) 
  17429.             calloc(1, sizeof(LfsSegUsageCheckPoint));
  17430.  
  17431.  
  17432.    usageArrayDataPtr =  AllocStableMem(smemParamsPtr, 3);
  17433.    return ret;
  17434. }
  17435.  
  17436.  
  17437.  
  17438.  
  17439.  
  17440.  
  17441.  
  17442.  
  17443.  
  17444.  
  17445.  
  17446.  
  17447.  
  17448.  
  17449.  
  17450.  
  17451.  
  17452. Boolean 
  17453. AllocDescMap()
  17454. {
  17455.     LfsStableMemParams  *smemParamsPtr;
  17456.     Boolean         ret = 1;
  17457.  
  17458.     smemParamsPtr = &(superBlockPtr->descMap.stableMem);
  17459.  
  17460.     descMapCheckPointPtr =  (LfsDescMapCheckPoint *) 
  17461.                 calloc(1, sizeof(LfsDescMapCheckPoint));
  17462.  
  17463.     descMapDataPtr =  AllocStableMem(smemParamsPtr, 2);
  17464.  
  17465.     return ret;
  17466.  
  17467. }
  17468.  
  17469. char *
  17470. GetUsageState(entryPtr)
  17471.     LfsSegUsageEntry *entryPtr;
  17472. {
  17473.     if (entryPtr->flags & 0x0002) 
  17474.     return "Dirty";
  17475.     if (entryPtr->flags & 0x0001) 
  17476.     return "Clean";
  17477.     return "Full";
  17478. }
  17479.  
  17480.  
  17481.  
  17482.  
  17483.  
  17484.  
  17485.  
  17486.  
  17487.  
  17488.  
  17489.  
  17490.  
  17491.  
  17492.  
  17493.  
  17494.  
  17495. int
  17496. DiskRead(diskFd, blockOffset, bufferSize, bufferPtr)
  17497.     int    diskFd;        
  17498.     int    blockOffset;    
  17499.     char *bufferPtr;    
  17500.     int     bufferSize;    
  17501. {
  17502.     int    status;
  17503.     int    blocks;
  17504.     char *bufPtr;
  17505.  
  17506.  
  17507.     
  17508.  
  17509.  
  17510.     status = lseek(diskFd, blockOffset*blockSize,     0    );
  17511.     if (status < 0) {
  17512.     fprintf((&stdioErrFile),"%s:", deviceName);
  17513.     perror("lseek");
  17514.     return status;
  17515.     }
  17516.     
  17517.  
  17518.  
  17519.  
  17520.     blocks = (bufferSize + blockSize-1)/blockSize;
  17521.     if (bufferSize != blocks * blockSize) { 
  17522.     bufPtr = malloc(blocks*blockSize);
  17523.     } else {
  17524.     bufPtr = bufferPtr;
  17525.     }
  17526.     status = read(diskFd, bufPtr, blocks*blockSize);
  17527.     if (status != blocks*blockSize) {
  17528.     if (status < 0) {
  17529.         fprintf((&stdioErrFile),"%s:", deviceName);
  17530.         perror("read device");
  17531.         return status;
  17532.     }
  17533.     fprintf((&stdioErrFile),"%s:Short read on device %d != %d\n",deviceName,
  17534.         status, blocks*blockSize);
  17535.     } else {
  17536.     status = bufferSize;
  17537.     }
  17538.     if (bufPtr != bufferPtr) { 
  17539.     bcopy(bufPtr, bufferPtr, bufferSize);
  17540.     free(bufPtr);
  17541.     }
  17542.     return status;
  17543. }
  17544.  
  17545.  
  17546.  
  17547.  
  17548.  
  17549.  
  17550.  
  17551.  
  17552.  
  17553.  
  17554.  
  17555.  
  17556.  
  17557.  
  17558.  
  17559.  
  17560.  
  17561. int
  17562. DiskWrite(diskFd, blockOffset, bufferSize, bufferPtr)
  17563.     int    diskFd;        
  17564.     int    blockOffset;    
  17565.     char *bufferPtr;    
  17566.     int     bufferSize;    
  17567. {
  17568.     int    status;
  17569.  
  17570.     if (!doWrites) {
  17571.     return bufferSize;
  17572.     }
  17573.     
  17574.  
  17575.  
  17576.     status = lseek(diskFd, blockOffset*blockSize,     0    );
  17577.     if (status < 0) {
  17578.     fprintf((&stdioErrFile),"%s:", deviceName);
  17579.     perror("lseek");
  17580.     return status;
  17581.     }
  17582.     
  17583.  
  17584.  
  17585.     status = write(diskFd, bufferPtr, bufferSize);
  17586.     if (status != bufferSize) {
  17587.     if (status < 0) {
  17588.         fprintf((&stdioErrFile),"%s:", deviceName);
  17589.         perror("read device");
  17590.         return status;
  17591.     }
  17592.     fprintf((&stdioErrFile),"%s:Short read on device %d != %d\n",deviceName,
  17593.         status, bufferSize);
  17594.     } 
  17595.     return status;
  17596. }
  17597.  
  17598. typedef struct StableMem {
  17599.     LfsStableMemParams  *paramsPtr;  
  17600.     LfsStableMemCheckPoint *checkpointPtr;  
  17601.     int            *blockIndexPtr;        
  17602.     int            *dirtyBitMap;        
  17603.     char        *dataPtr;        
  17604.  
  17605. } StableMem;
  17606.  
  17607.  
  17608.  
  17609.  
  17610.  
  17611.  
  17612.  
  17613.  
  17614.  
  17615.  
  17616.  
  17617.  
  17618.  
  17619.  
  17620.  
  17621.  
  17622. static ClientData 
  17623. AllocStableMem(smemParamsPtr, type)
  17624.     LfsStableMemParams  *smemParamsPtr;  
  17625.     int        type;
  17626. {
  17627.     int arraySize;
  17628.     int *blockIndexPtr;
  17629.     StableMem *stableMemPtr;
  17630.  
  17631.     arraySize = smemParamsPtr->blockSize * smemParamsPtr->maxNumBlocks;
  17632.     stableMemPtr = (StableMem *) malloc(sizeof(StableMem));
  17633.     stableMemPtr->paramsPtr = smemParamsPtr;
  17634.     stableMemPtr->checkpointPtr = 
  17635.     (LfsStableMemCheckPoint *) calloc(1, sizeof(LfsStableMemCheckPoint));
  17636.     blockIndexPtr = (int *) calloc(smemParamsPtr->maxNumBlocks, sizeof(int));
  17637.     stableMemPtr->blockIndexPtr = blockIndexPtr;
  17638.                    stableMemPtr->dirtyBitMap = (int *) malloc((unsigned)         (        (((smemParamsPtr->maxNumBlocks)+32 -1)/32) * sizeof(int)));              bzero((char *) ( ( stableMemPtr->dirtyBitMap)),         (        ((((smemParamsPtr->maxNumBlocks))+32 -1)/32) * sizeof(int)));
  17639.     stableMemPtr->dataPtr = calloc(1, arraySize);
  17640.     return (ClientData) stableMemPtr;
  17641. }
  17642. char *
  17643. GetStableMemEntry(clientData, entryNumber)
  17644.     ClientData clientData;
  17645.     int entryNumber;
  17646. {
  17647.     StableMem *stableMemPtr = (StableMem *) clientData;
  17648.     int blockNum, offset;
  17649.  
  17650.     if ((entryNumber < 0) || 
  17651.     (entryNumber >= stableMemPtr->paramsPtr->maxNumEntries)) {
  17652.     fprintf((&stdioErrFile),"Bad stable memory entry number %d\n", entryNumber);
  17653.     entryNumber = 0;
  17654.     }
  17655.     blockNum = entryNumber / stableMemPtr->paramsPtr->entriesPerBlock;
  17656.     offset = (entryNumber % stableMemPtr->paramsPtr->entriesPerBlock) * 
  17657.         stableMemPtr->paramsPtr->entrySize + 
  17658.            sizeof(LfsStableMemBlockHdr);
  17659.          (( stableMemPtr->dirtyBitMap)[(blockNum)/32] |=         (1 << ((blockNum) % 32)));
  17660.     return stableMemPtr->dataPtr + 
  17661.         blockNum * stableMemPtr->paramsPtr-> blockSize + offset;
  17662. }
  17663. static void
  17664. SetStableMemBlockIndex(clientData, blockNum, address)
  17665.     ClientData clientData;
  17666.     int blockNum;
  17667.     int address;
  17668. {
  17669.     StableMem *stableMemPtr = (StableMem *) clientData;
  17670.  
  17671.     if ((blockNum < 0) || 
  17672.     (blockNum >= stableMemPtr->paramsPtr->maxNumBlocks)) {
  17673.     fprintf((&stdioErrFile),"Bad stable memory block num %d\n", blockNum);
  17674.     return;
  17675.     }
  17676.     stableMemPtr->blockIndexPtr[blockNum] = address;
  17677.     return;
  17678. }
  17679. Boolean
  17680. StableMemCheckpoint(clientData, segPtr, checkPointPtr, checkPointSizePtr)
  17681.     ClientData clientData;
  17682.     LfsSeg    *segPtr;
  17683.     char    *checkPointPtr;
  17684.     int        *checkPointSizePtr;
  17685. {
  17686.     StableMem *stableMemPtr = (StableMem *) clientData;
  17687.     LfsStableMemBlockHdr *hdrPtr;
  17688.     LfsStableMemCheckPoint    checkPoint;
  17689.     LfsSegElement    *bufferPtr;
  17690.     int blockNum, offset, blockSize, fsBlocks;
  17691.     char    *summaryPtr;
  17692.  
  17693.     offset = 0;
  17694.     blockSize = stableMemPtr->paramsPtr-> blockSize;
  17695.     fsBlocks = blockSize/superBlockPtr->hdr.blockSize;
  17696.  
  17697.     checkPoint.numBlocks = 0;
  17698.     while ( (blockNum = Bit_FindFirstSet(
  17699.                stableMemPtr->paramsPtr->maxNumBlocks,
  17700.                stableMemPtr->dirtyBitMap)) != -1) {
  17701.     char *dataPtr = stableMemPtr->dataPtr + blockNum * blockSize;
  17702.     if (IsZero(dataPtr, blockSize)) {
  17703.         SetStableMemBlockIndex(clientData,blockNum, -1);
  17704.              (( stableMemPtr->dirtyBitMap)[(blockNum)/32] &=         ~(1 << ((blockNum) % 32)));
  17705.         continue;
  17706.     }
  17707.     summaryPtr =      LfsSegSlowGrowSummary((segPtr), ( fsBlocks), ( sizeof(int)), 0);
  17708.     if (summaryPtr == (char *)        0xFFFFFFFF) {
  17709.         return 1;
  17710.     }
  17711.     hdrPtr = (LfsStableMemBlockHdr *) dataPtr;
  17712.     hdrPtr->magic = 0x1f55da;
  17713.     hdrPtr->memType = stableMemPtr->paramsPtr->memType;
  17714.     hdrPtr->blockNum = blockNum;
  17715.     hdrPtr->reserved = 0;
  17716.  
  17717.     bufferPtr =      LfsSegSlowAddDataBuffer((segPtr), ( fsBlocks), ( dataPtr), ( 
  17718.                 (ClientData)        0xFFFFFFFF));
  17719.     *(int *)summaryPtr = blockNum;
  17720.           ((segPtr)->curSummaryPtr = (summaryPtr + sizeof(int)));
  17721.     SetStableMemBlockIndex(clientData, blockNum, 
  17722.                          LfsSegSlowDiskAddress((segPtr), ( bufferPtr)));
  17723.     segPtr->activeBytes += blockSize;
  17724.          (( stableMemPtr->dirtyBitMap)[(blockNum)/32] &=         ~(1 << ((blockNum) % 32)));
  17725.     if (blockNum >= checkPoint.numBlocks) {
  17726.         checkPoint.numBlocks = blockNum+1;
  17727.     }
  17728.     }
  17729.     *(LfsStableMemCheckPoint *) checkPointPtr = checkPoint;
  17730.     bcopy((char *) stableMemPtr->blockIndexPtr, 
  17731.         checkPointPtr + sizeof(LfsStableMemCheckPoint), 
  17732.         sizeof(int) * checkPoint.numBlocks);
  17733.     *checkPointSizePtr = sizeof(int) * checkPoint.numBlocks + 
  17734.                 sizeof(LfsStableMemCheckPoint);
  17735.  
  17736.     return 0;
  17737. }
  17738. Boolean
  17739. LfsSegUsageCheckpoint(segPtr, checkPointPtr, checkPointSizePtr)
  17740.     LfsSeg *segPtr;        
  17741.     char   *checkPointPtr;      
  17742.     int       *checkPointSizePtr;  
  17743. {
  17744.     LfsSegUsageCheckPoint *cp = (LfsSegUsageCheckPoint *) checkPointPtr;
  17745.     int        size;
  17746.     Boolean    full;
  17747.  
  17748.     *cp = *usageCheckPointPtr;
  17749.     size = sizeof(LfsSegUsageCheckPoint);
  17750.  
  17751.     full = StableMemCheckpoint(usageArrayDataPtr, segPtr, checkPointPtr + size,
  17752.         checkPointSizePtr);
  17753.     if (!full) { 
  17754.     *checkPointSizePtr = (*checkPointSizePtr) + size;
  17755.     }
  17756.     return full;
  17757.  
  17758. }
  17759.  
  17760.  
  17761.  
  17762.  
  17763.  
  17764.  
  17765.  
  17766.  
  17767.  
  17768.  
  17769.  
  17770.  
  17771.  
  17772.  
  17773.  
  17774.  
  17775.  
  17776.  
  17777. Boolean
  17778. LfsDescMapCheckpoint(segPtr, checkPointPtr, checkPointSizePtr)
  17779.     LfsSeg *segPtr;        
  17780.     char   *checkPointPtr;      
  17781.     int       *checkPointSizePtr;  
  17782. {
  17783.     LfsDescMapCheckPoint *cp = (LfsDescMapCheckPoint *) checkPointPtr;
  17784.     int        size, dataSize;
  17785.     Boolean    full;
  17786.  
  17787.     *cp = *descMapCheckPointPtr;
  17788.     size = sizeof(LfsDescMapCheckPoint);
  17789.     dataSize = 0;
  17790.     full = StableMemCheckpoint(descMapDataPtr, segPtr, checkPointPtr + size, 
  17791.             &dataSize);
  17792.     if (!full) { 
  17793.     (*checkPointSizePtr) = dataSize + size;
  17794.     }
  17795.     return full;
  17796.  
  17797. }
  17798.  
  17799.  
  17800.  
  17801.  
  17802.  
  17803.  
  17804.  
  17805.  
  17806.  
  17807.  
  17808.  
  17809.  
  17810.  
  17811.  
  17812.  
  17813.  
  17814.  
  17815. static void
  17816. FindAllFiles(diskFd)
  17817.     int diskFd;
  17818. {
  17819.     LfsFileDescriptor    *descPtr;
  17820.     char *descBuf;
  17821.     LfsDescMapEntry *descMapPtr;
  17822.     int bufSize, i, j;
  17823.  
  17824.     bufSize = superBlockPtr->fileLayout.descPerBlock * sizeof(*descPtr);
  17825.  
  17826.     descBuf = alloca(bufSize);
  17827.     descMapPtr =  ((LfsDescMapEntry *) GetStableMemEntry(descMapDataPtr, 0));
  17828.     descMapPtr->flags = 0x0001;
  17829.     descMapCheckPointPtr->numAllocDesc++;
  17830.     descMapPtr =  ((LfsDescMapEntry *) GetStableMemEntry(descMapDataPtr, 1));
  17831.     descMapPtr->flags = 0x0001;
  17832.     descMapCheckPointPtr->numAllocDesc++;
  17833.     descInfoArray[0].flags = descInfoArray[1].flags = 0x40;
  17834.  
  17835.     for (i = 2; i < superBlockPtr->descMap.maxDesc; i++) {
  17836.     if ((descInfoArray[i].flags & 0x10) == 0) {
  17837.         continue;
  17838.     }
  17839.     if (DiskRead(diskFd, descInfoArray[i].addr, bufSize, descBuf)
  17840.             != bufSize) {
  17841.         majorErrors++;
  17842.         fprintf((&stdioErrFile),"%s:FindAllFiles: Can't read desc for file %d\n",
  17843.                 deviceName,i);
  17844.     }
  17845.     descPtr = (LfsFileDescriptor *)descBuf;
  17846.     for (j = 0; j < superBlockPtr->fileLayout.descPerBlock; j++) {
  17847.         if (!(descPtr->common.flags & 0x2)) {
  17848.         break;
  17849.         }
  17850.         if (descPtr->common.magic != (unsigned short)0xF1D0) {
  17851.         majorErrors++;
  17852.         fprintf((&stdioErrFile),"%s:FindAllFiles: Corrupted descriptor block at %d, magic number 0x%x\n", deviceName, descMapPtr->blockAddress, descPtr->common.magic);
  17853.         }
  17854.         if (descPtr->fileNumber == i) {
  17855.         break;
  17856.         }
  17857.         descPtr++;
  17858.     }
  17859.     if ((j >= superBlockPtr->fileLayout.descPerBlock) ||
  17860.         !(descPtr->common.flags & 0x2) ||
  17861.         (descPtr->fileNumber != i)) {
  17862.         majorErrors++;
  17863.         fprintf((&stdioErrFile),"%s:FindAllFiles: Can't desc for file %d at %d\n",
  17864.             deviceName,i, descMapPtr->blockAddress);
  17865.         descInfoArray[i].flags = 0x40;
  17866.         continue;
  17867.     } 
  17868.     if (!CheckFile(diskFd, i, descPtr)) {
  17869.         descInfoArray[i].flags = 0x40;
  17870.         continue;
  17871.     }
  17872.     descMapPtr =  ((LfsDescMapEntry *) GetStableMemEntry(descMapDataPtr, i));
  17873.     descMapPtr->blockAddress = descInfoArray[i].addr;
  17874.     descMapPtr->flags = 0x0001;
  17875.     descMapPtr->truncVersion = descInfoArray[i].truncVersion;
  17876.     descMapCheckPointPtr->numAllocDesc++;
  17877.     descInfoArray[i].origLinkCount = descPtr->common.numLinks;
  17878.     if (shownew) {
  17879.         printf("Desc %d blockAddress %d\n", i , descMapPtr->blockAddress);
  17880.     }
  17881.     }
  17882. }
  17883.  
  17884.  
  17885.  
  17886.  
  17887.  
  17888.  
  17889.  
  17890.  
  17891.  
  17892.  
  17893.  
  17894.  
  17895.  
  17896.  
  17897.  
  17898.  
  17899.  
  17900. static void
  17901. ComputeUsageArray(diskFd)
  17902.     int diskFd;
  17903. {
  17904.     LfsFileDescriptor    *descPtr;
  17905.     char *descBuf;
  17906.     LfsDescMapEntry *descMapPtr;
  17907.     int bufSize, i, j;
  17908.  
  17909.     computeUsageArray = 1;
  17910.  
  17911.     bufSize = superBlockPtr->fileLayout.descPerBlock * sizeof(*descPtr);
  17912.     descBuf = alloca(bufSize);
  17913.  
  17914.     for (i = 2; i < superBlockPtr->descMap.maxDesc; i++) {
  17915.     descMapPtr =  ((LfsDescMapEntry *) GetStableMemEntry(descMapDataPtr, i));
  17916.     if (!(descMapPtr->flags & 0x0001)) {
  17917.         continue;
  17918.     }
  17919.     if (DiskRead(diskFd, descMapPtr->blockAddress, bufSize, descBuf)
  17920.             != bufSize) {
  17921.         majorErrors++;
  17922.         fprintf((&stdioErrFile),"%s:FindAllFiles: Can't read desc for file %d\n",
  17923.                 deviceName,i);
  17924.     }
  17925.     descPtr = (LfsFileDescriptor *)descBuf;
  17926.     for (j = 0; j < superBlockPtr->fileLayout.descPerBlock; j++) {
  17927.         if (!(descPtr->common.flags & 0x2)) {
  17928.         break;
  17929.         }
  17930.         if (descPtr->common.magic != (unsigned short)0xF1D0) {
  17931.         majorErrors++;
  17932.         fprintf((&stdioErrFile),"%s:FindAllFiles: Corrupted descriptor block at %d, magic number 0x%x\n", deviceName, descMapPtr->blockAddress, descPtr->common.magic);
  17933.         }
  17934.         if (descPtr->fileNumber == i) {
  17935.         break;
  17936.         }
  17937.         descPtr++;
  17938.     }
  17939.     if ((j >= superBlockPtr->fileLayout.descPerBlock) ||
  17940.         !(descPtr->common.flags & 0x2) ||
  17941.         (descPtr->fileNumber != i)) {
  17942.         majorErrors++;
  17943.         fprintf((&stdioErrFile),"%s:FindAllFiles: Can't desc for file %d at %d\n",
  17944.             deviceName,i, descMapPtr->blockAddress);
  17945.         continue;
  17946.     } 
  17947.     CheckFile(diskFd, i, descPtr);
  17948.     activeBytesArray[ (((descMapPtr->blockAddress)-superBlockPtr->hdr.logStartOffset)/            (superBlockPtr->usageArray.segmentSize/blockSize))] +=
  17949.                     sizeof(LfsFileDescriptor);
  17950.     }
  17951. }
  17952.  
  17953.  
  17954.  
  17955.  
  17956.  
  17957.  
  17958.  
  17959.  
  17960.  
  17961.  
  17962.  
  17963.  
  17964.  
  17965.  
  17966.  
  17967.  
  17968. static Boolean
  17969. CheckFile(diskFd, fileNum, descPtr) 
  17970.     int diskFd;
  17971.     int fileNum;
  17972.     LfsFileDescriptor *descPtr;
  17973. {
  17974.     int i;
  17975.     Boolean good;
  17976.  
  17977.     for (i = 0; i < 10; i++) {
  17978.     if (descPtr->common.direct[i] != -1) {
  17979.         if (i *     4096 > descPtr->common.lastByte + 1) {
  17980.         majorErrors++;
  17981.         fprintf((&stdioErrFile), 
  17982.         "%s:CheckFile: File %d has a non-NIL block %d after lastByte %d.\n",
  17983.             deviceName,fileNum, i, descPtr->common.lastByte);
  17984.         return 0;
  17985.          continue;
  17986.         }
  17987.         good = CheckBlock(diskFd, fileNum, descPtr, i, descPtr->common.direct[i]);
  17988.         if (!good) {
  17989.         return 0;
  17990.         }
  17991.     }
  17992.     }
  17993.     if (descPtr->common.indirect[0] != -1) { 
  17994.         if (10 *     4096 > 
  17995.             descPtr->common.lastByte + 1) {
  17996.         majorErrors++;
  17997.         fprintf((&stdioErrFile), 
  17998.         "%s:CheckFile: File %d has a non-NIL block %d after lastByte %d.\n",
  17999.             deviceName,fileNum, -1, descPtr->common.lastByte);
  18000.         return 0;
  18001.         }
  18002.         good = CheckIndirectBlock(diskFd, fileNum, descPtr, -1,
  18003.                 descPtr->common.indirect[0]);
  18004.         if (!good) {
  18005.         return 0;
  18006.         }
  18007.     }
  18008.     if (descPtr->common.indirect[1] != -1) { 
  18009.         if (10 *     4096 + 
  18010.                 4096 *     4096/4 > 
  18011.             descPtr->common.lastByte + 1) {
  18012.         majorErrors++;
  18013.         fprintf((&stdioErrFile), 
  18014.     "%s:CheckFile: File %d has a non-NIL block %d after lastByte %d.\n",
  18015.             deviceName, fileNum, -2, descPtr->common.lastByte);
  18016.         return 0;
  18017.         }
  18018.         good = CheckIndirectBlock(diskFd, fileNum, descPtr, -2, 
  18019.                 descPtr->common.indirect[1]);
  18020.         if (!good) {
  18021.         return 0;
  18022.         }
  18023.     }
  18024.     if (descPtr->common.indirect[2] != -1) { 
  18025.         majorErrors++;
  18026.         fprintf((&stdioErrFile), 
  18027.     "%s:CheckFile: File %d has a non-NIL block %d after lastByte %d.\n",
  18028.             deviceName, fileNum, -3, descPtr->common.lastByte);
  18029.     return 0;
  18030.     }
  18031.     return 1;
  18032. }
  18033.  
  18034.  
  18035.  
  18036.  
  18037.  
  18038.  
  18039.  
  18040.  
  18041.  
  18042.  
  18043.  
  18044.  
  18045.  
  18046.  
  18047.  
  18048.  
  18049.  
  18050.  
  18051. static Boolean
  18052. CheckIndirectBlock(diskFd, fileNum, descPtr, blockNum, blockAddress)
  18053.     int diskFd;
  18054.     int fileNum;
  18055.     LfsFileDescriptor *descPtr;
  18056.     int blockNum;
  18057.     int    blockAddress;
  18058. {
  18059.     int  i;
  18060.     int blockPtrs[    4096/4];
  18061.     Boolean good;
  18062.  
  18063.  
  18064.  
  18065.     good = CheckBlock(diskFd, fileNum, descPtr, blockNum, blockAddress);
  18066.     if (!good) {
  18067.     return 0;
  18068.     }
  18069.     if (DiskRead(diskFd, blockAddress,     4096, (char *)blockPtrs)
  18070.         !=     4096) {
  18071.     majorErrors++;
  18072.     fprintf((&stdioErrFile),"%s:CheckIndirectBlock: Can't read block %d of file %d.\n",
  18073.                 deviceName, blockNum, fileNum);
  18074.     return 0;
  18075.  
  18076.     }
  18077.     if ((blockNum == -1) || (blockNum < -3)) { 
  18078.     int start;
  18079.     if (blockNum == -1) {
  18080.         start = 10;
  18081.     } else {
  18082.         start = 10 + (    4096/4) + 
  18083.                  (    4096/4) * 
  18084.                  (-blockNum - (3+1));
  18085.     }
  18086.     for (i = 0; i <     4096/4; i++) {
  18087.         if (blockPtrs[i] != -1) { 
  18088.         good = CheckBlock(diskFd, fileNum, descPtr,
  18089.                start + i,blockPtrs[i]);
  18090.         if (!good) {
  18091.           return 0;
  18092.         }
  18093.         }
  18094.     }
  18095.     return 1;
  18096.     } 
  18097.     if (blockNum == -2) {
  18098.     for (i = 0; i <     4096/4; i++) {
  18099.         if (blockPtrs[i] != -1) { 
  18100.         good = CheckIndirectBlock(diskFd, fileNum, descPtr,
  18101.                 - i  - (3+1),blockPtrs[i]);
  18102.         if (!good) {
  18103.           return 0;
  18104.         }
  18105.         }
  18106.     }
  18107.     return 1;
  18108.     }
  18109.     majorErrors++;
  18110.     fprintf((&stdioErrFile),"%s:CheckIndirectBlock: Bad block number %d for file %d\n",
  18111.             deviceName, blockNum, fileNum);
  18112.     return 0;
  18113. }
  18114.  
  18115.  
  18116.  
  18117.  
  18118.  
  18119.  
  18120.  
  18121.  
  18122.  
  18123.  
  18124.  
  18125.  
  18126.  
  18127.  
  18128.  
  18129.  
  18130.  
  18131. static Boolean
  18132. CheckBlock(diskFd, fileNum, descPtr, blockNum, blockAddress)
  18133.     int diskFd;
  18134.     int fileNum;
  18135.     LfsFileDescriptor *descPtr;
  18136.     int blockNum;
  18137.     int    blockAddress;
  18138. {
  18139.     int j;
  18140.     int sizeInBlocks;
  18141.  
  18142.  
  18143.     sizeInBlocks =     4096/blockSize;
  18144.     if (blockNum >= 0) { 
  18145.     if ((blockNum+1) *     4096 > descPtr->common.lastByte + 1) {
  18146.         int size;
  18147.         size = descPtr->common.lastByte -     4096*blockNum +  1;
  18148.          sizeInBlocks = (size + blockSize - 1)/blockSize;
  18149.      }
  18150.     }
  18151.  
  18152.     if ((blockAddress < 0) || 
  18153.     (blockAddress+sizeInBlocks > numBlocks)) {
  18154.     majorErrors++;
  18155.     fprintf((&stdioErrFile), "%s:CheckFile: file %d block %d is out of range %d\n",
  18156.         deviceName, fileNum, blockNum, blockAddress);
  18157.     return 0;
  18158.     }
  18159.     for (j = 0; j < sizeInBlocks; j++) {
  18160.     if ((blockInfoArray[blockAddress + j].type != 1) &&
  18161.         (blockInfoArray[blockAddress + j].fileNum != fileNum) &&
  18162.         (blockInfoArray[blockAddress + j].blockNum != blockNum) &&
  18163.         !         (((descInfoArray[fileNum].truncVersion) & 0x7f) == (( blockInfoArray[blockAddress + j]).tversion)&0x7f)) {
  18164.         majorErrors++;
  18165.         fprintf((&stdioErrFile), 
  18166.         "%s:CheckFile:file %d block %d duplicate usage of block %d ",
  18167.             deviceName,
  18168.  
  18169.             fileNum, blockNum, blockAddress + j);
  18170.         fprintf((&stdioErrFile),"Previous use at %s\n", 
  18171.                 GetOwner(blockAddress + j));
  18172.         return 0;
  18173.     } 
  18174.     }
  18175.     if (computeUsageArray) { 
  18176.     activeBytesArray[ (((blockAddress)-superBlockPtr->hdr.logStartOffset)/            (superBlockPtr->usageArray.segmentSize/blockSize))] 
  18177.             += blockSize*sizeInBlocks;
  18178.     }
  18179.     return 1;
  18180. }
  18181.  
  18182.  
  18183.  
  18184.  
  18185.  
  18186.  
  18187.  
  18188.  
  18189.  
  18190.  
  18191.  
  18192.  
  18193.  
  18194.  
  18195.  
  18196.  
  18197. static void
  18198. BuildUsageArray(diskFd)
  18199. int diskFd;
  18200. {
  18201.     int segNo;
  18202.     Boolean foundCurrent;
  18203.     LfsSegUsageEntry *usageArrayPtr;
  18204.  
  18205.     usageCheckPointPtr->freeBlocks = 0;  
  18206.     usageCheckPointPtr->numClean = 0;
  18207.     usageCheckPointPtr->numDirty = 0;
  18208.     usageCheckPointPtr->dirtyActiveBytes = 
  18209.             (int) (superBlockPtr->usageArray.segmentSize * .90);
  18210.     usageCheckPointPtr->currentSegment = 0;
  18211.     usageCheckPointPtr->currentBlockOffset = -1;
  18212.     usageCheckPointPtr->curSegActiveBytes = 0;
  18213.     usageCheckPointPtr->previousSegment = -1;
  18214.     usageCheckPointPtr->cleanSegList = -1;
  18215.     foundCurrent = 0;
  18216.     for (segNo = 0; segNo < superBlockPtr->usageArray.numberSegments; 
  18217.     segNo++) {
  18218.     usageArrayPtr =  ((LfsSegUsageEntry *) GetStableMemEntry(usageArrayDataPtr, segNo));
  18219.     if (activeBytesArray[segNo] == 0) {
  18220.         usageArrayPtr->flags = 0x0001;
  18221.         usageArrayPtr->activeBytes = usageCheckPointPtr->cleanSegList;
  18222.         usageCheckPointPtr->cleanSegList = segNo;
  18223.         usageCheckPointPtr->numClean++;
  18224.         usageCheckPointPtr->freeBlocks += 
  18225.             superBlockPtr->usageArray.segmentSize/blockSize;
  18226.     } else if (activeBytesArray[segNo] <
  18227.                 usageCheckPointPtr->dirtyActiveBytes) {
  18228.         if (!foundCurrent) { 
  18229.         usageArrayPtr->activeBytes = 0;
  18230.         usageArrayPtr->flags = 0;
  18231.         usageCheckPointPtr->currentSegment = segNo;
  18232.         usageCheckPointPtr->curSegActiveBytes = 
  18233.                 activeBytesArray[segNo];
  18234.  
  18235.         usageArrayPtr->activeBytes  = 0;
  18236.         foundCurrent = 1;
  18237.         } else { 
  18238.         usageArrayPtr->activeBytes = activeBytesArray[segNo];
  18239.         usageArrayPtr->flags = 0x0002;
  18240.         usageCheckPointPtr->numDirty++;
  18241.         usageCheckPointPtr->freeBlocks += 
  18242.             (superBlockPtr->usageArray.segmentSize - 
  18243.             usageArrayPtr->activeBytes + blockSize - 1)/blockSize;
  18244.         }
  18245.     } else {
  18246.         usageArrayPtr->flags = 0;
  18247.         if (!foundCurrent) { 
  18248.         usageArrayPtr->activeBytes = 0;
  18249.         usageCheckPointPtr->currentSegment = segNo;
  18250.         usageCheckPointPtr->curSegActiveBytes = 
  18251.                 activeBytesArray[segNo];
  18252.         foundCurrent = 1;
  18253.         } else {
  18254.         usageArrayPtr->activeBytes = activeBytesArray[segNo];
  18255.         usageCheckPointPtr->freeBlocks += 
  18256.             (superBlockPtr->usageArray.segmentSize - 
  18257.             usageArrayPtr->activeBytes + blockSize - 1)/blockSize;
  18258.         }
  18259.     }
  18260.     if (shownew) {
  18261.         printf("Seg %d flag %d activeBytes %d\n", segNo,
  18262.             usageArrayPtr->flags,
  18263.             usageArrayPtr->activeBytes);
  18264.     }
  18265.     }
  18266. }
  18267.  
  18268.  
  18269.  
  18270.  
  18271.  
  18272.  
  18273.  
  18274.  
  18275.  
  18276.  
  18277.  
  18278.  
  18279.  
  18280.  
  18281.  
  18282.  
  18283.  
  18284.  
  18285.  
  18286. ReturnStatus
  18287. LfsGetLogTail(logRangePtr, startBlockPtr)
  18288.     LfsSegLogRange *logRangePtr;  
  18289.     int           *startBlockPtr; 
  18290. {
  18291.     LfsSegUsageEntry *s;
  18292.     int        segNumber;
  18293.  
  18294.     if (usageCheckPointPtr->currentBlockOffset != -1) {
  18295.     
  18296.  
  18297.  
  18298.     logRangePtr->prevSeg = usageCheckPointPtr->previousSegment;
  18299.     logRangePtr->current = usageCheckPointPtr->currentSegment;
  18300.     logRangePtr->nextSeg =  usageCheckPointPtr->cleanSegList;
  18301.     (*startBlockPtr) = usageCheckPointPtr->currentBlockOffset;
  18302.     return         0x00000000;
  18303.     }
  18304.     
  18305.  
  18306.  
  18307.     if (usageCheckPointPtr->numClean == 0) {
  18308.     fprintf((&stdioErrFile), "No clean segments to write\n");
  18309.     return                      0x00040008;
  18310.     }
  18311.     s =  ((LfsSegUsageEntry *) GetStableMemEntry(usageArrayDataPtr,  usageCheckPointPtr->currentSegment));
  18312.     s->activeBytes = usageCheckPointPtr->curSegActiveBytes;
  18313.     usageCheckPointPtr->freeBlocks += 
  18314.             (superBlockPtr->usageArray.segmentSize - 
  18315.             s->activeBytes + blockSize - 1)/blockSize;
  18316.     if (s->activeBytes <= usageCheckPointPtr->dirtyActiveBytes) {
  18317.     s->flags |= 0x0002;
  18318.     usageCheckPointPtr->numDirty++;
  18319.     }
  18320.     s->timeOfLastWrite = 2;
  18321.     segNumber = usageCheckPointPtr->cleanSegList;
  18322.     s =  ((LfsSegUsageEntry *) GetStableMemEntry(usageArrayDataPtr, segNumber));
  18323.     usageCheckPointPtr->cleanSegList = s->activeBytes;
  18324.  
  18325.     logRangePtr->prevSeg = usageCheckPointPtr->previousSegment = usageCheckPointPtr->currentSegment;
  18326.     logRangePtr->current = usageCheckPointPtr->currentSegment = segNumber;
  18327.     logRangePtr->nextSeg =  usageCheckPointPtr->cleanSegList;
  18328.  
  18329.     usageCheckPointPtr->numClean--;
  18330.     s->activeBytes = usageCheckPointPtr->curSegActiveBytes = 0;
  18331.     s->flags  &= ~0x0001;
  18332.     (*startBlockPtr) = 0;
  18333.     return         0x00000000;
  18334. }
  18335.  
  18336.  
  18337.  
  18338.  
  18339.  
  18340.  
  18341.  
  18342.  
  18343.  
  18344.  
  18345.  
  18346.  
  18347.  
  18348.  
  18349.  
  18350.  
  18351.  
  18352. void
  18353. LfsSetLogTail( logRangePtr, startBlock, activeBytes)
  18354.     LfsSegLogRange *logRangePtr;  
  18355.     int    startBlock; 
  18356.     int    activeBytes;    
  18357. {
  18358.     usageCheckPointPtr->currentBlockOffset = startBlock;
  18359.     if (activeBytes > 0) {
  18360.     usageCheckPointPtr->curSegActiveBytes += activeBytes;
  18361.     usageCheckPointPtr->freeBlocks -= 
  18362.             (activeBytes + blockSize - 1)/blockSize;
  18363.    }
  18364. }
  18365.  
  18366.  
  18367.  
  18368.  
  18369.  
  18370.  
  18371.  
  18372.  
  18373.  
  18374.  
  18375.  
  18376.  
  18377.  
  18378.  
  18379.  
  18380.  
  18381.  
  18382.  
  18383.  
  18384.  
  18385. void
  18386. LfsSegUsageCheckpointUpdate(checkPointPtr, size)
  18387.     char *checkPointPtr; 
  18388.     int     size;         
  18389. {
  18390.  
  18391.     (*(LfsSegUsageCheckPoint *) checkPointPtr) = *usageCheckPointPtr;
  18392.     return;
  18393. }
  18394.  
  18395.  
  18396.  
  18397.  
  18398.  
  18399.  
  18400.  
  18401.  
  18402.  
  18403.  
  18404.  
  18405.  
  18406.  
  18407.  
  18408.  
  18409.  
  18410.  
  18411.  
  18412. static void
  18413. CheckSummaryRegions(diskFd)
  18414. int diskFd;
  18415. {
  18416.     int segNo, startAddr, blockOffset;
  18417.     char *summaryLimitPtr, *summaryPtr;
  18418.     LfsSegSummary *segSummaryPtr;
  18419.     LfsSegSummaryHdr *segSummaryHdrPtr;
  18420.     Seg    *segPtr;
  18421.  
  18422.     for (segNo = 0; segNo < superBlockPtr->usageArray.numberSegments; 
  18423.     segNo++) {
  18424.     segPtr = SegInit(diskFd, segNo);
  18425.     startAddr = SegStartAddr(segPtr) + segPtr->segSizeInBlocks;
  18426.     blockOffset = 1; 
  18427.     do { 
  18428.         segSummaryPtr = (LfsSegSummary *) 
  18429.             SegFetchBlock(segPtr, blockOffset-1, blockSize);
  18430.         if (segSummaryPtr->size == 0) {
  18431.         SegReleaseBlock(segPtr, (char *) segSummaryPtr);
  18432.         break;
  18433.         }
  18434.         if (segSummaryPtr->magic != 0x1065e6    ) {
  18435.         majorErrors++;
  18436.         fprintf((&stdioErrFile),"%s: Bad magic number 0x%x for summary region of segment %d\n", deviceName, segSummaryPtr->magic, segNo);
  18437.         SegReleaseBlock(segPtr, (char *) segSummaryPtr);
  18438.         break;
  18439.         }
  18440.         if (segSummaryPtr->timestamp >= currentTimestamp) {
  18441.         currentTimestamp = segSummaryPtr->timestamp + 1;
  18442.         }
  18443.         summaryLimitPtr = (char *) segSummaryPtr + segSummaryPtr->size;
  18444.         summaryPtr = (char *) (segSummaryPtr + 1);
  18445.         while (summaryPtr < summaryLimitPtr) {
  18446.            segSummaryHdrPtr = (LfsSegSummaryHdr *) summaryPtr;
  18447.            if (segSummaryHdrPtr->lengthInBytes == 0) {
  18448.             break;
  18449.            }
  18450.            switch (segSummaryHdrPtr->moduleType) { 
  18451.            case   2:
  18452.           CheckSegUsageSummary(diskFd, segPtr, 
  18453.                 segSummaryPtr->timestamp, 
  18454.                 startAddr - blockOffset, 
  18455.                 blockOffset, segSummaryHdrPtr);
  18456.            break;
  18457.            case    1:
  18458.           CheckDescMapSummary(diskFd, segPtr, 
  18459.                 segSummaryPtr->timestamp, 
  18460.                 startAddr - blockOffset, blockOffset, 
  18461.                 segSummaryHdrPtr);
  18462.            break;
  18463.            case 0:
  18464.           CheckFileLayoutSummary(diskFd, segPtr, 
  18465.                 segSummaryPtr->timestamp, 
  18466.                 startAddr - blockOffset, blockOffset, 
  18467.                  segSummaryHdrPtr);
  18468.             break;
  18469.            default: {
  18470.             fprintf((&stdioErrFile),"%s:CheckSummary: Unknown module type %d at %d, Size %d Blocks %d\n",
  18471.                 deviceName, segSummaryHdrPtr->moduleType,
  18472.                 startAddr - blockOffset, 
  18473.                 segSummaryHdrPtr->lengthInBytes
  18474.                , segSummaryHdrPtr->numDataBlocks);
  18475.             break;
  18476.             }
  18477.            }
  18478.            summaryPtr += segSummaryHdrPtr->lengthInBytes;
  18479.            blockOffset += segSummaryHdrPtr->numDataBlocks;
  18480.        }
  18481.        SegReleaseBlock(segPtr, (char *) segSummaryPtr);
  18482.        blockOffset = segSummaryPtr->nextSummaryBlock;
  18483.     } while( blockOffset != -1);
  18484.     SegRelease(segPtr);
  18485.     }
  18486. }
  18487.  
  18488.  
  18489.  
  18490.  
  18491.  
  18492.  
  18493.  
  18494.  
  18495.  
  18496.  
  18497.  
  18498.  
  18499.  
  18500.  
  18501.  
  18502.  
  18503. static void
  18504. CheckSegUsageSummary(diskFd, segPtr, timestamp,startAddress, offset, segSummaryHdrPtr) 
  18505.     int diskFd;
  18506.     Seg *segPtr;
  18507.     int timestamp;
  18508.     int startAddress;
  18509.     int offset;
  18510.     LfsSegSummaryHdr *segSummaryHdrPtr;
  18511. {
  18512.     int blocks, *blockArray, i, startAddr, fsBlocks, j;
  18513.  
  18514.     fsBlocks = superBlockPtr->usageArray.stableMem.blockSize/blockSize;
  18515.     blocks = (segSummaryHdrPtr->lengthInBytes - sizeof(LfsSegSummaryHdr)) /
  18516.                 sizeof(int);
  18517.     if (blocks * fsBlocks != segSummaryHdrPtr->numDataBlocks) {
  18518.     majorErrors++;
  18519.     fprintf((&stdioErrFile),"%s:CheckSegUsageSummary: Wrong block count; is %d should be %s\n", deviceName, blocks * fsBlocks, segSummaryHdrPtr->numDataBlocks);
  18520.     }
  18521.  
  18522.     blockArray = (int *) (segSummaryHdrPtr + 1);
  18523.     for (i = 0; i < blocks; i++) {
  18524.     startAddr = startAddress - i * fsBlocks - fsBlocks;
  18525.     if ((blockArray[i] < 0) || 
  18526.         (blockArray[i] > superBlockPtr->usageArray.stableMem.maxNumBlocks)){
  18527.         majorErrors++;
  18528.        fprintf((&stdioErrFile),"%s:CheckSegUsageSummary: Bad block number %d at %d\n",
  18529.             deviceName,blockArray[i], startAddr);
  18530.         continue;
  18531.     }
  18532.     for (j = 0; j < fsBlocks; j++) { 
  18533.         blockInfoArray[startAddr + j].type = 3;
  18534.         blockInfoArray[startAddr + j].blockNum = blockArray[i];
  18535.         blockInfoArray[startAddr + j].found = 1;
  18536.     }
  18537.     }
  18538. }
  18539.  
  18540.  
  18541.  
  18542.  
  18543.  
  18544.  
  18545.  
  18546.  
  18547.  
  18548.  
  18549.  
  18550.  
  18551.  
  18552.  
  18553.  
  18554.  
  18555. static void
  18556. CheckDescMapSummary(diskFd, segPtr, timestamp,startAddress, offset, segSummaryHdrPtr) 
  18557.     int diskFd;
  18558.     Seg *segPtr;
  18559.     int timestamp;
  18560.     int startAddress;
  18561.     int offset;
  18562.     LfsSegSummaryHdr *segSummaryHdrPtr;
  18563. {
  18564.     int blocks, *blockArray, i, startAddr, fsBlocks, j;
  18565.  
  18566.     fsBlocks = superBlockPtr->descMap.stableMem.blockSize/blockSize;
  18567.     blocks = (segSummaryHdrPtr->lengthInBytes - sizeof(LfsSegSummaryHdr)) /
  18568.                 sizeof(int);
  18569.     if (blocks * fsBlocks != segSummaryHdrPtr->numDataBlocks) {
  18570.     majorErrors++;
  18571.     fprintf((&stdioErrFile),"%s:CheckDescMapSummary: Wrong block count; is %d should be %s\n", deviceName,blocks * fsBlocks, segSummaryHdrPtr->numDataBlocks);
  18572.     }
  18573.     blockArray = (int *) (segSummaryHdrPtr + 1);
  18574.     for (i = 0; i < blocks; i++) {
  18575.     startAddr = startAddress - i * fsBlocks - fsBlocks;
  18576.     if ((blockArray[i] < 0) || 
  18577.         (blockArray[i] > superBlockPtr->descMap.stableMem.maxNumBlocks)){
  18578.         majorErrors++;
  18579.        fprintf((&stdioErrFile),"%s:CheckDescMapSummary: Bad block number %d at %d\n",
  18580.             deviceName,blockArray[i], startAddr);
  18581.         continue;
  18582.     }
  18583.     for (j = 0; j < fsBlocks; j++) { 
  18584.         blockInfoArray[startAddr + j].type = 2;
  18585.         blockInfoArray[startAddr + j].blockNum = blockArray[i];
  18586.         blockInfoArray[startAddr + j].found = 1;
  18587.     }
  18588.     }
  18589.  
  18590.  
  18591. }
  18592.  
  18593.  
  18594.  
  18595.  
  18596.  
  18597.  
  18598.  
  18599.  
  18600.  
  18601.  
  18602.  
  18603.  
  18604.  
  18605.  
  18606.  
  18607.  
  18608. static void
  18609. CheckFileLayoutSummary(diskFd, segPtr, timestamp, startAddr, offset, segSummaryHdrPtr) 
  18610.     int diskFd;
  18611.     Seg  *segPtr;
  18612.     int timestamp;
  18613.     int startAddr;
  18614.     int offset;
  18615.     LfsSegSummaryHdr *segSummaryHdrPtr;
  18616. {
  18617.     char *summaryPtr, *limitPtr;
  18618.     int descMapBlocks;
  18619.     int startAddress, j, ssize;
  18620.  
  18621.     ssize = superBlockPtr->usageArray.segmentSize;
  18622.  
  18623.  
  18624.     startAddress = startAddr;
  18625.     descMapBlocks = superBlockPtr->descMap.stableMem.blockSize/blockSize;
  18626.     summaryPtr = (char *) (segSummaryHdrPtr + 1);
  18627.     limitPtr = summaryPtr + segSummaryHdrPtr->lengthInBytes - 
  18628.             sizeof(LfsSegSummaryHdr);
  18629.     while (summaryPtr < limitPtr) {
  18630.     switch (*(unsigned short *) summaryPtr) {
  18631.     case      0x0   : {
  18632.         int        fileNumber;
  18633.         int        slot;
  18634.         LfsFileDescriptor    *descPtr;
  18635.         descPtr = (LfsFileDescriptor *) SegFetchBlock(segPtr, offset, 
  18636.                         descMapBlocks*blockSize);
  18637.         offset += descMapBlocks;
  18638.         startAddress -= descMapBlocks;
  18639.         for (slot = 0; slot < superBlockPtr->fileLayout.descPerBlock; 
  18640.         slot++) {
  18641.         int addr;
  18642.         
  18643.  
  18644.  
  18645.  
  18646.         if (!(descPtr[slot].common.flags & 0x2)) {
  18647.             break;
  18648.         }
  18649.         addr = startAddress + (slot * sizeof(LfsFileDescriptor))/
  18650.                         blockSize;
  18651.         fileNumber = descPtr[slot].fileNumber;
  18652.         if ((fileNumber < 0) || 
  18653.             (fileNumber >= superBlockPtr->descMap.maxDesc)) {
  18654.             majorErrors++;
  18655.            fprintf((&stdioErrFile),"%s:CheckFileLayoutSummary: bad file number %d in desc block at %d\n", deviceName, fileNumber, startAddress);
  18656.            continue;
  18657.         }
  18658.         blockInfoArray[addr].type =    6;
  18659.         if (timestamp >= descInfoArray[fileNumber].timestamp) {
  18660.             descInfoArray[fileNumber].timestamp = timestamp;
  18661.             descInfoArray[fileNumber].flags = 0x10;
  18662.             if (descPtr[slot].common.fileType ==         1) {
  18663.             descInfoArray[fileNumber].flags |= 0x01;
  18664.             }
  18665.             descInfoArray[fileNumber].addr = startAddress;
  18666.         }
  18667.          }
  18668.         
  18669.  
  18670.  
  18671.         summaryPtr += sizeof(LfsFileLayoutDesc);
  18672.         SegReleaseBlock(segPtr, (char *) descPtr);
  18673.         break;
  18674.     }
  18675.     case      0x1   : {
  18676.         int    *blockArray;
  18677.         int              i;
  18678.         LfsFileLayoutSummary *fileSumPtr;
  18679.         int firstBlock;
  18680.         
  18681.  
  18682.  
  18683.  
  18684.          fileSumPtr = (LfsFileLayoutSummary *) summaryPtr;
  18685.         if ((fileSumPtr->fileNumber < 0) || 
  18686.         (fileSumPtr->fileNumber >= superBlockPtr->descMap.maxDesc)) {
  18687.         majorErrors++;
  18688.            fprintf((&stdioErrFile),"%s:CheckFileLayoutSummary: bad file number %d at %d\n", deviceName, fileSumPtr->fileNumber, startAddress);
  18689.            goto out;
  18690.         }
  18691.         if (fileSumPtr->truncVersion > 
  18692.             descInfoArray[fileSumPtr->fileNumber].truncVersion) {
  18693.         descInfoArray[fileSumPtr->fileNumber].truncVersion = 
  18694.                 fileSumPtr->truncVersion;
  18695.         }
  18696.         
  18697.  
  18698.  
  18699.         blockArray = (int *)(summaryPtr + sizeof(LfsFileLayoutSummary));
  18700.         firstBlock = fileSumPtr->numBlocks -
  18701.          (fileSumPtr->numDataBlocks-1) *     4096/blockSize;
  18702.         for (i = 0; i < fileSumPtr->numDataBlocks; i++) {
  18703.         int addr, blocks;
  18704.  
  18705.         addr = startAddress - i*    4096/blockSize - firstBlock;
  18706.         blocks = (i == 0) ? firstBlock : (    4096/blockSize);
  18707.         for (j = 0; j < blocks ; j++) { 
  18708.             blockInfoArray[addr+j].type = 1;
  18709.             blockInfoArray[addr+j].fileNum = fileSumPtr->fileNumber;
  18710.             blockInfoArray[addr+j].blockNum = blockArray[i];
  18711.             blockInfoArray[addr+j].found = 1;
  18712.             blockInfoArray[startAddr + j].tversion = 
  18713.                 fileSumPtr->truncVersion;
  18714.         }
  18715.         }
  18716.         out:
  18717.         startAddress = startAddress - fileSumPtr->numBlocks;
  18718.         offset += fileSumPtr->numBlocks;
  18719.         summaryPtr += sizeof(LfsFileLayoutSummary) + 
  18720.                 fileSumPtr->numDataBlocks * sizeof(int); 
  18721.         break;
  18722.       }
  18723.  
  18724.     case      0x4   : {
  18725.         LfsFileLayoutLog    *logSumPtr;
  18726.         int            numBlocks;
  18727.         int            i,j, addr, blocks;
  18728.         LfsDirOpLogBlockHdr *hdrPtr = (LfsDirOpLogBlockHdr *)         0xFFFFFFFF;
  18729.  
  18730.         
  18731.  
  18732.  
  18733.  
  18734.          logSumPtr = (LfsFileLayoutLog *) summaryPtr;
  18735.          summaryPtr = summaryPtr + sizeof(LfsFileLayoutLog);
  18736.          numBlocks = logSumPtr->numBlocks;
  18737.          addr = startAddress;
  18738.          for (i = 0; i < logSumPtr->numDataBlocks; i++) {
  18739.         if (numBlocks >     4096/blockSize) {
  18740.             blocks =     4096/blockSize;
  18741.         } else {
  18742.             blocks = numBlocks;
  18743.         }
  18744.  
  18745.             hdrPtr = (LfsDirOpLogBlockHdr *)
  18746.              SegFetchBlock(segPtr, offset, blocks*blockSize);
  18747.         addr -= blocks;
  18748.         offset += blocks;
  18749.         if (hdrPtr->magic != 0x1f5d109) {
  18750.             fprintf((&stdioErrFile),"Bad dir op log magic number.\n");
  18751.         }
  18752.         if (showDirLog) { 
  18753.             ShowDirLogBlock(hdrPtr, addr);
  18754.         }
  18755.         for (j = 0; j < blocks; j++) {
  18756.             blockInfoArray[addr+j].type =     7;
  18757.             blockInfoArray[addr+j].found = 1;
  18758.         }
  18759.         numBlocks -= blocks;
  18760.          }
  18761.          startAddress = startAddress - logSumPtr->numBlocks;
  18762.          if ( hdrPtr != (LfsDirOpLogBlockHdr *)         0xFFFFFFFF) { 
  18763.          SegReleaseBlock(segPtr, (char *) hdrPtr);
  18764.         }
  18765.          break;
  18766.     }
  18767.     case 0x3   : 
  18768.     case     0x2   : 
  18769.     default: {
  18770.         panic("Unknown type");
  18771.     }
  18772.       }
  18773.     }
  18774.  
  18775. }
  18776. static char *
  18777. GetOwner(blockNum)
  18778.     int blockNum;
  18779. {
  18780.     static char buffer[128];
  18781.  
  18782.     sprintf(buffer, "<%d,%d,%d>", blockInfoArray[blockNum].type,
  18783.                 blockInfoArray[blockNum].fileNum,
  18784.                 blockInfoArray[blockNum].blockNum);
  18785.  
  18786.     return buffer;
  18787. }
  18788.  
  18789.  
  18790.  
  18791.  
  18792.  
  18793.  
  18794.  
  18795.  
  18796.  
  18797.  
  18798.  
  18799.  
  18800.  
  18801.  
  18802.  
  18803.  
  18804. static void
  18805. PrintSuperBlock(superBlockPtr)
  18806.     LfsSuperBlock *superBlockPtr;
  18807. {
  18808.     printf("SuperBlock.hdr.version: %d\n", superBlockPtr->hdr.version);
  18809.     printf("SuperBlock.hdr.blockSize: %d\n", 
  18810.                 superBlockPtr->hdr.blockSize);
  18811.     printf("SuperBlock.hdr.maxCheckPointBlocks: %d\n", 
  18812.                 superBlockPtr->hdr.maxCheckPointBlocks);
  18813.     printf("SuperBlock.hdr.checkPointOffset[0]: %d\n", 
  18814.             superBlockPtr->hdr.checkPointOffset[0]);
  18815.     printf("SuperBlock.hdr.checkPointOffset[1]: %d\n", 
  18816.             superBlockPtr->hdr.checkPointOffset[1]);
  18817.     printf("SuperBlock.hdr.logStartOffset: %d\n", 
  18818.             superBlockPtr->hdr.logStartOffset);
  18819.     printf("SuperBlock.hdr.maxNumCacheBlocks: %d\n", 
  18820.             superBlockPtr->hdr.maxNumCacheBlocks);
  18821.     printf("SuperBlock.descMap.version: %d\n", superBlockPtr->descMap.version);
  18822.     printf("SuperBlock.descMap.maxDesc: %d\n", superBlockPtr->descMap.maxDesc);
  18823.     printf("SuperBlock.descMap.stableMem.blockSize: %d\n", 
  18824.             superBlockPtr->descMap.stableMem.blockSize);
  18825.     printf("SuperBlock.descMap.stableMem.maxNumBlocks: %d\n", 
  18826.             superBlockPtr->descMap.stableMem.maxNumBlocks);
  18827.     printf("SuperBlock.usageArray.segmentSize: %d\n", 
  18828.                 superBlockPtr->usageArray.segmentSize);
  18829.     printf("SuperBlock.usageArray.numberSegments: %d\n", 
  18830.                 superBlockPtr->usageArray.numberSegments);
  18831.     printf("SuperBlock.usageArray.minNumClean: %d\n", 
  18832.                 superBlockPtr->usageArray.minNumClean);
  18833.     printf("SuperBlock.usageArray.minFreeBlocks: %d\n", 
  18834.                 superBlockPtr->usageArray.minFreeBlocks);
  18835.     printf("SuperBlock.usageArray.stableMem.blockSize: %d\n", 
  18836.             superBlockPtr->descMap.stableMem.blockSize);
  18837.     printf("SuperBlock.usageArray.stableMem.maxNumBlocks: %d\n", 
  18838.             superBlockPtr->descMap.stableMem.maxNumBlocks);
  18839.     printf("SuperBlock.fileLayout.descPerBlock: %d\n", 
  18840.                 superBlockPtr->fileLayout.descPerBlock);
  18841. }
  18842.  
  18843.  
  18844.  
  18845.  
  18846.  
  18847.  
  18848.  
  18849.  
  18850.  
  18851.  
  18852.  
  18853.  
  18854.  
  18855.  
  18856.  
  18857.  
  18858.  
  18859. static void
  18860. PrintCheckPointHdr(headerPtr, region)
  18861.     LfsCheckPointHdr *headerPtr;
  18862.     int region;
  18863. {
  18864.     printf("CheckPointHdr[%d].timestamp: %d\n", region, headerPtr->timestamp);
  18865.     printf("CheckPointHdr[%d].size: %d\n", region, headerPtr->size);
  18866.     printf("CheckPointHdr[%d].version: %d\n", region, headerPtr->version);
  18867.     printf("CheckPointHdr[%d].domainPrefix: %s\n", region, 
  18868.                     headerPtr->domainPrefix);
  18869.     printf("CheckPointHdr[%d].domainNumber: %d\n", region,
  18870.                 headerPtr->domainNumber);
  18871.     printf("CheckPointHdr[%d].attachSeconds: %d\n", region, 
  18872.             headerPtr->attachSeconds);
  18873.     printf("CheckPointHdr[%d].detachSeconds: %d\n", region, 
  18874.             headerPtr->detachSeconds);
  18875.     printf("CheckPointHdr[%d].serverID: %d\n", region, 
  18876.             headerPtr->serverID);
  18877. }
  18878.  
  18879. static void
  18880. ShowDirLogBlock(hdrPtr, addr)
  18881.     LfsDirOpLogBlockHdr *hdrPtr;
  18882.     int addr;
  18883. {
  18884.     LfsDirOpLogEntry *entryPtr, *limitPtr;
  18885.  
  18886.     printf("Dirlog block at %d, size %d\n", addr, hdrPtr->size);
  18887.     limitPtr = (LfsDirOpLogEntry *) (((char *) hdrPtr) + hdrPtr->size);
  18888.     entryPtr = (LfsDirOpLogEntry *) (hdrPtr+1);
  18889.     while (entryPtr < limitPtr) {
  18890.     printf("LogSeqNum %d opFlags 0x%x dirFile %d dirOffset %d linkCount %d\n",
  18891.         entryPtr->hdr.logSeqNum, entryPtr->hdr.opFlags, 
  18892.         entryPtr->hdr.dirFileNumber,
  18893.         entryPtr->hdr.dirOffset, entryPtr->hdr.linkCount);
  18894.     entryPtr->dirEntry.fileName[entryPtr->dirEntry.nameLength] = '\0';
  18895.     printf("    File %d Name %s\n", entryPtr->dirEntry.fileNumber, 
  18896.         entryPtr->dirEntry.fileName);
  18897.     entryPtr = (LfsDirOpLogEntry *) 
  18898.              (((char *)entryPtr) +      ((entryPtr)->dirEntry.recordLength + sizeof(LfsDirOpLogEntryHdr)));
  18899.     }
  18900.  
  18901. }
  18902.  
  18903. static char *
  18904. FmtTime()
  18905. {
  18906.      struct timeval tim;
  18907.      time_t  timeVal;
  18908.      static char timeBuffer[128];
  18909.  
  18910.      if (gettimeofday(&tim, (struct timezone *)      0)) {
  18911.      perror("gettimeofday");
  18912.      return "Unknown";
  18913.      }
  18914.      timeVal = tim.tv_sec;
  18915.      (void)strcpy(timeBuffer, ctime(&timeVal) + sizeof("Sun Sep 16 ")-1);
  18916.  
  18917.      sprintf(timeBuffer+sizeof("01:03:52")-1,".%03d", tim.tv_usec/1000);
  18918.      return timeBuffer;
  18919. }
  18920.  
  18921. static Seg *
  18922. SegInit(diskFd, segNumber)
  18923.     int    diskFd;
  18924.     int    segNumber;    
  18925. {
  18926.     static Seg seg;
  18927.     seg.segNo = segNumber;
  18928.     seg.segSizeInBlocks = superBlockPtr->usageArray.segmentSize/blockSize;
  18929.     seg.diskFd = diskFd;
  18930.     return &seg;
  18931. }
  18932.  
  18933. static int
  18934. SegStartAddr(segPtr)
  18935.     Seg    *segPtr;
  18936. {
  18937.     return  segPtr->segNo * segPtr->segSizeInBlocks + 
  18938.             superBlockPtr->hdr.logStartOffset;
  18939. }
  18940. static char *
  18941. SegFetchBlock(segPtr, blockOffset, size)
  18942.     Seg        *segPtr;
  18943.     int        blockOffset;
  18944.     int        size;
  18945. {
  18946.     char *buf;
  18947.     int      startAddr;
  18948.  
  18949.     startAddr = SegStartAddr(segPtr) + segPtr->segSizeInBlocks - blockOffset -
  18950.         size/blockSize;
  18951.     buf = malloc(size);
  18952.  
  18953.     if (DiskRead(segPtr->diskFd, startAddr , size, buf) != size) {
  18954.     fprintf((&stdioErrFile),"%s:SegFetchBlock: Can't read seg %d offset %d.\n", deviceName, segPtr->segNo, blockOffset);
  18955.     }
  18956.     return buf;
  18957. }
  18958. static void
  18959. SegReleaseBlock(segPtr, memPtr)
  18960.     Seg        *segPtr;
  18961.     char    *memPtr;
  18962. {
  18963.     free(memPtr);
  18964. }
  18965. static void
  18966. SegRelease(segPtr)
  18967.     Seg        *segPtr;
  18968. {
  18969. }
  18970.  
  18971. static Boolean 
  18972. IsZero(dataPtr, size)
  18973.     register char *dataPtr;
  18974.     register int    size;
  18975. {
  18976.     for (; size > 0; dataPtr++, size--) {
  18977.     if (*dataPtr) {
  18978.         return 0;
  18979.     }
  18980.     }
  18981.     return 1;
  18982.  
  18983. }
  18984.  
  18985.